折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >php开发> oci_connect(): OCIEnvNlsCreate() failed

oci_connect(): OCIEnvNlsCreate() failed

为了这个错误编译了好几个小时。

原由是因为我在服务器上安装了oracle18c的服务器程序,肯定就设置了$ORACLE_HOME等变量。

编译Oci的时候,php默认就是用这个编译了,然后连接oracle报错如标题。

这里有个技巧就是在Phpinfo中可以看到oci编译使用的oracle_home,如下:


Compile-time ORACLE_HOME	/usr/lib/oracle/12.2/client64
Libraries Used	-Wl,-rpath,/usr/lib/oracle/12.2/client64/lib -L/usr/lib/oracle/12.2/client64/lib -lclntsh


最后发现在Oci8编译的时候是可以指定oci环境的。


./configure --with-php-config=/usr/local/php/bin/php-config --with-oci8=/usr/lib/oracle/12.2/client64

还是需要像平时那样安装oracle_client的,oracle_client默认安装在
/usr/lib/oracle/12.2/client64
但是,怪就怪在有些基础文件是在
/usr/include/oracle/12.2/client64
路径中,如果编译OCI8的时候指定Oci路径,会报错
./oci.h:656:23: fatal error: oratypes.h: No such file or directory

而这些h文件,全部在/usr/include/oracle/12.2/client64下面
最后,采取一个最二的措施,把这些.h文件,全部复制到oci8目录下去,编译通过。

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《oci_connect(): OCIEnvNlsCreate() failed

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换