【问题标题】:php-fpm not loading same extensions php-cli isphp-fpm 不加载相同的扩展 php-cli 是
【发布时间】: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 所在的位置。

标签: php centos fpm


【解决方案1】:

不确定它是否相关,但这发生在“Amazon Linux 2 AMI”上,所以我想也适用于“CentOS”。

长话短说,我安装了 composer 和其他 php 的东西。

[zzzz@stageOpenID /etc/httpd/sites-enabled]$ php -i
phpinfo()
PHP Version => 7.2.30

System => Linux stageOpenID 4.14.177-139.254.amzn2.x86_64 #1 SMP Thu May 7 18:48:23 UTC 2020 x86_64
Build Date => May  5 2020 18:04:39
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Scan this dir for additional .ini files => /etc/php.d
Additional .ini files parsed => 

到目前为止一切顺利。

现在是网络。

来自 phpinfo.php:

PHP Version: 7.2.30 
System: Linux stageOpenID 4.14.177-139.254.amzn2.x86_64 #1 SMP Thu May 7 18:48:23 UTC 2020 x86_64
Build Date: May 5 2020 18:06:20
Server API: FPM/FastCGI
Virtual Directory Support: disabled
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan this dir for additional .ini files /etc/php.d
Additional .ini files parsed

但列表不同。

为什么?只是因为yum安装后我重启了httpd但是忘记重启php-fpm,所以php-cli得到了新模块而php-fpm没有。

所以,别忘了:

sudo systemctl restart php-fpm

【讨论】:

    【解决方案2】:

    取决于您安装 PHP FPM 的方式,但在 Debian CLI 和 FPM 上尝试使用不同的 ini 文件:

       php -i | grep php.ini
    

    地雷是/etc/php/7.0/cli/php.ini

    和

        <?php phpinfo(); ?>
    

    我的是 /etc/php/7.0/fpm/php.ini

    希望这会有所帮助。

    【讨论】:

    • 这些是故障排除步骤,而不是答案。一旦您有足够的声誉,您就可以对任何帖子发表评论。在此之前,请不要回答问题或 cmets!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多