【发布时间】:2018-11-30 22:19:00
【问题描述】:
我制作了一个连接到 Oracle(oci8 扩展)的 PHP 脚本。当我使用 CLI 模式运行它时效果很好 (# php test-oracle.php)
但是在浏览器中打开的相同脚本(Apache + PHP 7.x FPM)不起作用,我收到了这个错误:
oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries
我阅读并关注了我在论坛(也在 stackoverflow 中)找到的许多内容,但对 apache 没有任何作用。
Ubuntu 16.04 LTS / Apache 2.4.33 / PHP 7.1.18
谢谢!
【问题讨论】:
-
您是否检查了您的 Apache/PHP 的
LD_LIBRARY_PATH是否如错误提示的那样正确? -
@gvenzl 是的,我尝试在很多地方添加但没有成功,/etc/ld.so.conf.d/oracle.conf,/etc/environment,/etc/apache2/envvars 以及/etc/php/7.1/fpm/php.ini。我在浏览器中仍然有同样的错误。我使用安装在 /opt/oracle_instantclient 中的 oracle instantclient。这是我用于 LD_LIBRARY_PATH 的路径。不明白为什么不起作用..
-
看看
phpinfo();是否真的为您的PHP进程设置了LD_LIBRARY_PATH。也看看stackoverflow.com/questions/16345515/…和community.oracle.com/thread/4081480 -
当您将其添加到
/etc/ld.so.conf.d/oracle.conf时,您是否运行了ldconfig? /opt/oracle_instantclient 是否可以被 Apache 进程读取?