2016-12-04 154 views
1

我有一个问题oci8模块没有加载。php oci8模块未加载(Ubuntu 16)

操作系统是Ubuntu的16,与Apache 2.4和PHP 5.6

我做以下步骤:

  • 我下载Oracle即时客户端Basic和SDK包: (甲骨文instantclient11.2- basic-11.2.0.4.0-1.x86_64.rpm, oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm)
  • 安装Oracle Instant Client(将.rpm转换为.deb)
  • 下载OCI8从PECL扩展(oci8-2.0.12)
  • 构建PHP OCI8模块
  • 复印oci8.so到模块目录(/ usr/lib中/ PHP/20131226 /)
  • 编辑php.ini文件和添加扩展(扩展名=/usr/lib/php/20131226/oci8.so)
  • 我向环境变量LD_LIBRARY_PATH添加了oracle库路径LD_LIBRARY_PATH =/usr/lib/oracle/11.2/client/lib
  • Restart Apache

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

Unable to load dynamic library '/usr/lib/php/20131226/oci8.so' - libaio.so.1: cannot open shared object file: No such file or directory in Unknown on line 0

+0

可以对文件oci8.so您的访问过程? chmod的属性是否好? –

+0

谢谢@Alexandre T,我认为它是其他php模块的属性,'-rwxr-xr-x 1 root root 624416 Dec 3 15:42 oci8.so' for ex。 '-rw-r - r-- 1 root root 1463904 Nov 14 05:35 mbstring.so -rw-r - r-- 1 root root 47256 Nov 14 05:35 mcrypt.so -rw-r- -r-- 1 root root 55432 Nov 14 05:35 mysql.so' –

+0

如果删除可执行标志会发生什么? 'chmod a-x oci8.so' 错误仍然存​​在? –

回答

0

问题来自libaio.so库,因为@Alexandre说,它是32/64位不匹配。

我发现从@Codo回答这个问题:https://stackoverflow.com/a/10619763/1995358

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

sudo apt-get install libaio1

0

确保LD_LIBRARY_PATH设置在Apache发现它的位置,可能是Apache的envvars文件。或者如果机器上没有任何其他Oracle软件,则可以更新ldconfig。免费提供大量信息Underground PHP & Oracle Manual

有几个问题:为什么不使用12.1 Instant Client?借此,您可以连接到Oracle DB 10.2及更高版本。

此外,您为什么要转换RPM,然后将输出移动到用户目录?为什么不直接下载Instant Client zip文件并将其解压缩?您只需添加下载页面说明中提及的sym链接即可。