PHP不加载php.ini中指定的扩展名,但加载dl()

Nek*_*nto 4 php

Php不加载通过php.ini指定的扩展名

php -v 不会给出任何错误或警告

php -i | grep extension_dir 显示extension_dir设置为扩展文件所在的位置,但它们不会显示在扩展名列表中 php -m

但运行php -r 'dl("apc.so"); phpinfo();' | grep apc显示模块正常加载dl()功能.

我从源代码安装了php-5.3.5.配置为

'--enable-fastcgi'
'--enable-fpm'
'--enable-mbstring'
'--enable-pdo'
'--enable-inline-optimization'
'--enable-sockets'
'--enable-zip'
'--enable-mbregex'
'--enable-xml'
'--enable-sysvsem'
'--enable-sysvshm'
'--enable-pcntl'
'--enable-ftp'
'--enable-soap'
'--enable-shmop'
'--disable-rpath'
'--disable-debug'
'--with-mcrypt'
'--with-zlib'
'--with-curl'
'--with-bz2'
'--with-mysql'
'--with-gettext'
'--with-gd'
'--with-pdo-mysql'
'--with-pcre-regex'
'--with-mhash'
'--with-pic'
'--with-zlib-dir'
'--with-ttf'
'--with-openssl'
'--with-png-dir'
'--with-libdir=lib64'
'--without-pdo-sqlite'
'--without-sqlite'
Run Code Online (Sandbox Code Playgroud)

uname -a 打印:

Linux ip-*-*-*-* 2.6.34.7-56.40.amzn1.x86_64 #1 SMP Fri Oct 22 18:48:49 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

Php通过php-fpm在nginx 0.9.5上运行

Pas*_*TIN 7

要加载扩展,您必须有一行,如下所示:

extension=apc.so
Run Code Online (Sandbox Code Playgroud)

在PHP使用的php.ini (或任何其他.ini文件)文件中.


如果您在使用时正确加载了扩展程序dl(),则表示您的扩展程序正常(没有错误的版本或类似的东西).

下一步,是:

  • 确保已将extension=...行添加到php.ini文件中
  • 确保您已修改了正确的php.ini文件

您可以检查使用的php.ini文件:它显示在输出中phpinfo().


注意:对于某些Linux发行版,php.iniCLI中使用的文件与Apache使用的文件不同(不确定用于nginx的文件).


Nek*_*nto 0

通过静态链接 php 可执行文件中所需的扩展来修复此问题,现在一切正常。但服务器不会加载 xdebug 扩展。