【发布时间】:2019-09-25 15:14:06
【问题描述】:
使用 php-5.4。我正在尝试加载“oci8.so”以访问函数oci_connect。在命令行中,我可以正常访问所述功能。但是(在重新加载、重新启动和重新加载之后)php-fpm 拒绝加载扩展。
php -r 'print_r(get_loaded_extensions()); 列出oci8。
Array
(
[0] => Core
[1] => date
[2] => ereg
[3] => libxml
[4] => openssl
[5] => pcre
[6] => zlib
[7] => bz2
[8] => calendar
[9] => ctype
[10] => hash
[11] => filter
[12] => ftp
[13] => gettext
[14] => gmp
[15] => SPL
[16] => iconv
[17] => pcntl
[18] => readline
[19] => Reflection
[20] => session
[21] => standard
[22] => shmop
[23] => SimpleXML
[24] => sockets
[25] => exif
[26] => tokenizer
[27] => xml
[28] => curl
[29] => fileinfo
[30] => json
[31] => oci8
[32] => Phar
[33] => zip
[34] => mhash
)
但是curl localhost/extensions.php 读取
Array
(
[0] => Core
[1] => date
[2] => ereg
[3] => libxml
[4] => openssl
[5] => pcre
[6] => zlib
[7] => bz2
[8] => calendar
[9] => ctype
[10] => hash
[11] => filter
[12] => ftp
[13] => gettext
[14] => gmp
[15] => SPL
[16] => iconv
[17] => Reflection
[18] => session
[19] => standard
[20] => shmop
[21] => SimpleXML
[22] => sockets
[23] => exif
[24] => tokenizer
[25] => xml
[26] => cgi-fcgi
[27] => curl
[28] => fileinfo
[29] => json
[30] => Phar
[31] => zip
[32] => mhash
// missing oci8
// and also missing 'pcntl'??
)
fpm 和 cli 读取完全相同的php.ini。我已经检查并测试了。
任何错误日志中都没有。
【问题讨论】:
-
您如何具体检查 fpm/cli php.ini 是否相同?
-
“使用 php-5.4” 为什么?不!不要那样做。无论如何,一个 php.ini 文件可能包含在一个 SAPI 中,而不是另一个。检查
php -i与phpinfo()的网络输出相比。注意每个中的“加载的配置文件”和“解析的其他 .ini 文件”。 -
这是给客户的,当然他们强迫我使用过时的设备。
-
那就让他们雇你升级吧!没有借口运行这样的旧版本。至少 5.6 去年刚刚停产。
-
再次。
php -i和 fpm 的phpinfo()都指向/etc/php.ini。这就是extension=oci8.so所在的位置。