2017-04-27 111 views
1

的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()中显示它们。

http://img.radiokot.ru/files/21274/medium/19bdtra7xs.PNG

我可以写环境变量的每个文件,但是这是不是一种选择。

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"); 

我该怎么办?

+0

你最终解决了这个问题吗?在那种情况下,如何?谢谢 – andcl

回答

0

我们没有相同的基础架构,但我只是解决了这个相同的问题:

  • 阿帕奇
  • 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!

相关问题