linux下php+oracle环境

来源:互联网 发布:数据采集卡企业 编辑:程序博客网 时间:2024/05/19 22:07

挺麻烦的
记录一下我的折腾过程
首先是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

原创粉丝点击