You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04 LTS下PHP-FPM+NGINX环境OCI8扩展启用问题求助

PHP OCI8扩展在Ubuntu 18.04 LTS的PHP-FPM环境中加载失败问题

问题背景

我一直在使用最新的PHP包,编译安装OCI8扩展后操作看似正常,但在PHP-FPM配置中启用该扩展后,phpinfo()输出里完全看不到这个扩展的存在。这套编译安装流程在Ubuntu 16.04 LTS中可以正常工作,但到了Ubuntu 18.04 LTS就出现了异常。

CLI环境的问题与解决

  • CLI环境下扩展默认无法加载,报错信息如下:
    PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/oci8.so' - libmql1.so: cannot open shared object file: No such file or directory in Unknown on line 0
    
  • 执行以下命令解决了CLI的加载问题:
    echo 'LD_LIBRARY_PATH="/opt/oracle/instantclient_12_2"' >> /etc/environment
    

PHP-FPM环境的尝试与困境

  • 尝试将LD_LIBRARY_PATH添加到PHP-FPM环境配置中,执行命令:
    echo "env['LD_LIBRARY_PATH'] = /opt/oracle/instantclient_12_2" >> /etc/php/7.2/fpm/pool.d/www.conf
    
  • 重启php7.2-fpm后,phpinfo()的Environment和PHP Variables中已显示该变量,但OCI8扩展仍静默加载失败——即使开启了debug日志和display_startup_errors,也没有任何相关报错信息。

Apache环境的对比验证

在同一服务器的Apache环境中,将export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2添加到/etc/apache2/envvars后,OCI8扩展可以正常工作;未设置该变量时,Apache会报出与CLI类似的加载错误。

版本差异与测试范围

  • Ubuntu 16.04 LTS无需设置LD_LIBRARY_PATH即可正常加载OCI8扩展,这个变化始于Ubuntu 17.10和Ubuntu 18.04 LTS
  • 我已在laravel/homestead 6.0.0和ubuntu/bionic64 v20180509.0.0两个Vagrant虚拟机中测试,问题表现完全一致

后续排查进展

EDIT 1

我向包维护者的问题追踪平台提问,对方认为是编译时未设置合适的RPATH,但我确认自己已经设置过该参数,问题仍未解决。随后发现:Ubuntu 18.04编译的扩展使用RUNPATH而非16.04版本的RPATH,如果PHP-FPM仅识别RPATH而忽略RUNPATH,这很可能就是导致加载失败的原因。

EDIT 2

我发现了一个可能与此问题相关的未关闭bug报告。

EDIT 3

根据评论区的建议,我正在重新检查更新ld配置的相关内容。

内容的提问来源于stack exchange,提问作者Ben Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:52:37