挺麻煩的
記錄一下我的折騰過程
首先是php的編譯
在設定完oracle的環境變數以後
ORACLE_BASE=/opt/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1/db_1; export ORACLE_HOME
編譯php的時候加上
--with-oci8
後面的錯誤OCIEnvNlsCreate() failed 就是一個很麻煩的事
明明phpinfo()裡的oci8裡可以看到oracle_home
可偏偏在用的時候找不到
看了好多文檔 試了多次
最後我的方法
如果是10g
首先
chmod -R a+x $ORACLE_HOME
或者
chmod -R o+rx $ORACLE_HOME
再寫個測試
<?php
//PHP串連Oracle函數
function php_conn_ora(){
$username='your username';
$passwd='your password';
$protocol='TCP';
$SERVICE_NAME='you service_name or SID';
$ORACLE_SERVER_IP_ADDRESS='your oracle ip';
$Port='1521';
PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8");
if(!$conn = oci_pconnect($username, $passwd, "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)) ) (CONNECT_DATA = (SERVICE_NAME = $SERVICE_NAME) ) )")) echo("Error in Connecting to DataBase");
return $conn;
}
//Query 函數
function ora_query($sql){
global $conn_ora;
$result=oci_parse($conn_ora,$sql);
oci_execute($result,OCI_DEFAULT);
return $result;
}
//Echo 環境變數
$ORACLE_HOME = getenv("ORACLE_HOME");
echo "ORACLE_HOME=$ORACLE_HOME
/n";
$LD_LIBRARY_PATH = getenv("LD_LIBRARY_PATH");
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH
/n";
$PATH = getenv("PATH");
echo "PATH=$PATH
/n";
//串連測試
$conn_ora=php_conn_ora();
$sql="select * from sometable where rownum<=2";
$result=ora_query($sql);
oci_fetch_all($result,$array);
echo "<pre>";
var_dump($array);
echo "</pre>";
?>
然後可以在3個地方輪著試試 添加環境變數
apachectl
apache使用者的bash
/etc/profile
直到不報
OCIEnvNlsCreate() failed 這個錯誤為止
參考文章
http://blog.cn-ic.org/?p=94