Php OCIEnvNlsCreate()失败-请检查ORACLE_HOME和>;图书馆路径
ubuntu 16.10/nginx/php7.0/Oracle11xe 我正在尝试通过PHP连接到Oracle数据库。我得到了以下错误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
$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
/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