OCIEnvNlsCreate()失败 - 请检查ORACLE_HOME和> LD_LIBRARY_PATH
问题描述:
的Ubuntu 16.10/nginx的/ php7.0/ORACLE 11 XEOCIEnvNlsCreate()失败 - 请检查ORACLE_HOME和> LD_LIBRARY_PATH
我试图通过PHP连接到Oracle databas。我得到以下错误。
$conn = oci_connect('login', 'pass', 'localhost/xe');
警告:oci_connect():OCIEnvNlsCreate()失败。也有一些是 不对您的系统 - 请检查ORACLE_HOME和 LD_LIBRARY_PATH设置,并指向正确的目录中 /var/www/blah.php上线26
警告:oci_connect():错误,而试图检索错误 文本ORA-01804在/var/www/blah.php在线26
真的请求变量,它们将是空的。此代码返回空字符串。
$test = getenv('LD_LIBRARY_PATH')." ".getenv('ORACLE_HOME');
print ("$test");
但是在phpinfo()中显示它们。
我可以写环境变量的每个文件,但是这是不是一种选择。
putenv("ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe");
putenv("LD_LIBRARY_PATH=-Wl,-rpath,/u01/app/oracle/product/11.2.0/xe/lib -L/u01/app/oracle/product/11.2.0/xe/lib -lclntsh");
我该怎么办?
答
我们没有相同的基础架构,但我只是解决了这个相同的问题:
- 阿帕奇
- CentOS7
- PHP 5
- 甲骨文12cR1
的消息称:
请检查ORACLE_HOME和LD_LIBRARY_PATH设置,并指向正确的目录
在Apache中,有一个文件,你可以设置环境变量: /etc/sysconfig/httpd
。必须有一个用于nginx的配置文件。
我添加了所需的环境变量。 假设
- ORACLE_HOME是/oracle/product/12.1.0/dbhome_1
- Oracle客户程序下/oracle/product/12.1安装。0 /客户端
地址:
ORACLE_HOME=/oracle/product/12.1.0/dbhome_1
LD_LIBRARY_PATH=/oracle/product/12.1.0/dbhome_1/lib:/oracle/product/12.1.0/dbhome_1/network/lib:/oracle/product/12.1.0/client/lib
我还补充说:
TNS_ADMIN=/oracle/product/12.1.0/dbhome_1/network/admin
ORACLE_SID=<your sid>
更新/etc/sysconfig/httpd
我只是重新启动Apache的服务的httpd后,就是这样:
$ sudo systemctl restart httpd
我希望他lps!
你最终解决了这个问题吗?在那种情况下,如何?谢谢 – andcl