使用 Ubuntu 服务器 17.04 php 7 和 apache2 加载 oci8.so 时出错

Enr*_*que 2 php oracle oracle-call-interface ubuntu-server php-7

我在Ubuntu Server 17.04上经历了下载Oracle即时客户端、SDK等的全过程。然后用alien将rpm包转换为deb,安装,设置路径,下载pecl oci8,编译安装(无错误)等,然后添加一行:

扩展名=/usr/lib/php/20151012/oci8.so

并重新启动。当我检查 /var/log/apache2/error.log 时,我看到:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/oci8.so' - libmql1.so: cannot open shared object file: No such file or directory in Unknown on line 0
[Thu Jul 20 10:46:44.352631 2017] [mpm_prefork:notice] [pid 23450] AH00163: Apache/2.4.25 (Ubuntu) configured -- resuming normal operations
[Thu Jul 20 10:46:44.352717 2017] [core:notice] [pid 23450] AH00094: Command line: '/usr/sbin/apache2'
Run Code Online (Sandbox Code Playgroud)

有谁知道我能做些什么来使它工作?我想我没有启用 selinux 或者是权限问题?

谢谢

Enr*_*que 5

解决方案是将 ORACLE 全局变量不是放在 /etc/environment 而是放在 /etc/apache2/envvars

所以,我在 /etc/apache2/envvars 的末尾添加了这两行

export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
Run Code Online (Sandbox Code Playgroud)

一切都很好

  • LD_LIBRARY_PATH 的导出显然是我所缺少的。这样做了,问题就消失了。谢谢+1 (2认同)