OCIEnvNlsCreate() 失败了吗?欢迎来到地狱...
我知道线程很旧,但问题仍然存在。通常这个问题的答案会重定向到第三方网站,通常是 404s 。
让我们从问题开始。错误本身很笼统。它的文档总结为“lib 崩溃了......不知道为什么”。有多种解决方案,包括但不限于配置、重新安装和祈祷“在此处插入随机神名”。
以下是最常见解决方案的简短列表:
1. 将变量放入您的 .php 文件中。
putenv("LD_LIBRARY_PATH=$newld");
where $newld is the link to your library.
2. 从您的 php 文件中删除变量 LD_LIBRARY_PATH,如果存在(是的,它在 1 中显示的方式),并将其放入您的 apache2.conf 或 httpd.conf 或 /etc/environment 或您的发行版/版本的任何文件中有环境变量。可以在此处或互联网上的任何地方找到一个简单的指南。为什么?
不要在 PHP 脚本中使用 putenv() 设置 Oracle 环境变量,因为 Oracle 库可能会在脚本运行之前加载和初始化。使用 putenv() 设置的变量可能会导致冲突、崩溃或不可预知的行为。某些功能可能有效,但其他功能可能会产生细微的错误。应在启动 Web 服务器之前设置变量。
如安装文档中所述。之后还要重新启动apache。它是基于发行版/版本的,但很可能命令是service httpd restart
.
重新安装 oci8。尽可能多次。不要强迫它。强迫只会让事情变得更糟。另外,尝试编译它(也就是下载包使用./configure -'all the fancy commands you'll need to use'
然后make install
)。
确保你做对了LD_LIBRARY_PATH
。说起来很有趣,对吧?您可能没有注意到 oracleclient/lib/
在N 个不同位置创建了包含或多或少相同文件的文件夹,它们之间的唯一区别是,选择除其中一个文件夹之外的所有文件夹将导致上述错误。完整性检查?
重新安装 php/apache。您可能有一些导致问题的旧安装。因此,使用apt-get purge php*
或yum remove php*
任何对您的分发有相同作用的方法,将是一个好的开始。
编辑
PHP 升级后问题再次出现,这次使用了不同的解决方案。
编辑 SYSCONFIG编辑文件 /etc/sysconfig/httpd。在末尾添加这两行:
导出 LD_LIBRARY_PATH=/path/to.lib 导出 ORACLE_HOME=/path/to/home
放弃并阅读可在此处找到的手册。
如果这些都没有帮助,请随意浏览悲伤之墙,寻求解决方案......