PHP OCI8模块未加载(Ubuntu 16)



我对OCI8模块有问题,它不会加载。

OS是Ubuntu 16,Apache 2.4和Php 5.6

我执行以下步骤:

  • 我下载了Oracle Instant Client Basic和SDK软件包:(Oracle-InstantClient11.2-Basic-11.2.0.4.4.0-1.x86_64.rpm,Oracle-InstantClient11.2-devel-11.2.0.4.0.4.0-1.x86_64.rpm)
  • 安装了Oracle Instant Client(将.rpm转换为.deb之后)
  • 从PECL(OCI8-2.0.12)下载了OCI8扩展
  • 构建PHP OCI8模块
  • 复制OCI8.SO到模块目录(/usr/lib/php/php/20131226/)
  • 编辑的php.ini文件并添加完整路径的扩展名(Extension =/usr/lib/php/php/20131226/oci8.so)
  • 在环境变量ld_library_path =/usr/lib/oracle/oracle/11.2/client/lib
  • 然后,重新启动Apache Web服务器

未加载模块,Apache日志显示以下错误:

无法加载动态库'/usr/lib/php/20131226/oci8.so' - libaio.so.1:无法打开共享对象文件:没有这样的文件或目录在第0行中未知

问题来自libaio。

我从@codo找到了问题:https://stackoverflow.com/a/10619763/1995358

安装libaio.so库后解决的问题再次:

sudo apt-get install libaio1

确保在Apache找到它的位置设置LD_LIBRARY_PATH,可能是Apache的Envvars文件。或者,如果机器上没有其他Oracle软件,则可以更新LDCONFIG。免费的地下PHP&甲骨文手册

有几个问题:为什么不使用12.1即时客户端?这样,您可以连接到Oracle DB 10.2及以后。

另外,为什么要将RPMS转换,然后将输出移至用户目录?为什么不简单地下载即时客户端zip文件并解压缩它们呢?您需要做的就是添加下载页说明中提到的SYM链接。

我创建了文件etc/apache/envvars在那儿,我写道:导出ld_library_path =/usr/lib/oracle/oracle/11.2/client64/lib导出ORACLE_HOME =/usr/lib/oracle/11.2/client64

那么,重要的是,apache是如何重新列出的(在我的情况下,系统cttl重新启动不起作用)。我做到了:apache2ctl停止apache2ctl start

...一切都很好。

最新更新