Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OCIEnvNlsCreate()失败-请检查ORACLE_HOME和>;图书馆路径_Php_Nginx_Oracle Call Interface - Fatal编程技术网

Php OCIEnvNlsCreate()失败-请检查ORACLE_HOME和>;图书馆路径

Php OCIEnvNlsCreate()失败-请检查ORACLE_HOME和>;图书馆路径,php,nginx,oracle-call-interface,Php,Nginx,Oracle Call Interface,ubuntu 16.10/nginx/php7.0/Oracle11xe 我正在尝试通过PHP连接到Oracle数据库。我得到了以下错误 $conn = oci_connect('login', 'pass', 'localhost/xe'); 警告:oci_connect():OCIEnvNlsCreate()失败。有些事 您的系统有问题-请检查ORACLE\u主页和 设置LD_LIBRARY_路径并指向中的正确目录 /var/www/blah.php,第26行 警告:oci_connect

ubuntu 16.10/nginx/php7.0/Oracle11xe

我正在尝试通过PHP连接到Oracle数据库。我得到了以下错误

$conn = oci_connect('login', 'pass', 'localhost/xe');
警告:oci_connect():OCIEnvNlsCreate()失败。有些事 您的系统有问题-请检查ORACLE\u主页和 设置LD_LIBRARY_路径并指向中的正确目录 /var/www/blah.php,第26行

警告:oci_connect():尝试检索文本时出错 第26行的ORA-01804 in/var/www/blah.php

如果请求变量,它们将是空的。此代码返回空字符串

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

我能做什么?

我们没有相同的基础设施,但我只是在以下方面解决了同样的问题:

  • 阿帕奇
  • 世纪7
  • PHP 5
  • 甲骨文12cR1
消息说:

请检查ORACLE_HOME和LD_LIBRARY_路径是否已设置并指向正确的目录

在apache中,有一个文件可用于设置环境变量:
/etc/sysconfig/httpd
。nginx必须有一个配置文件

我添加了所需的环境变量。 假设

  • ORACLE_HOME是/ORACLE/product/12.1.0/dbhome_1
  • Oracle客户端安装在/Oracle/product/12.1.0/client下
加:

我还补充说:

TNS_ADMIN=/oracle/product/12.1.0/dbhome_1/network/admin
ORACLE_SID=<your sid>

我希望有帮助

这与不正确的NLS_LANG参数有关。在我的情况下,它被设置为“NA”。解决办法是:

Windows-NLS_LANG必须在Windows注册表中取消设置(最好改名)。在注册表中的\HKEY\U LOCAL\U MACHINE\SOFTWARE\ORACLE中查找NLS\U LANG子项,并将其重命名


Linux/UNIX-这里您只需发出Linux命令“unset NLS_LANG”

我通过从行中删除分号来解决它;对于CentOS 6中的php fpm 5.6,文件/etc/php-fpm.d/www.conf中的clean_env=no。希望它能在更新的PHP版本中有所帮助。请记住在更改此文件后重新启动php fpm服务。

您最终解决了问题吗?那样的话,怎么办?谢谢
TNS_ADMIN=/oracle/product/12.1.0/dbhome_1/network/admin
ORACLE_SID=<your sid>
$ sudo systemctl restart httpd