所以我在 Mountain Lion 上运行 MAMP 并且我已经使用 pecl 安装了 gmagick 和 imagick,两者都是候选版本(主要是因为 gmagick 没有稳定的版本并且 imagick 3.0.0 没有安装,它给出了一个 make 错误)。当我在终端中运行 php -i 而不是在 phpinfo() 中运行时,模块会出现,我检查了 php.ini 两者都是相同的,所以这不是问题。但是我已经安装了 bitset(这是一个稳定的版本) 并且它出现在 phpinfo() 和 php -i 中。所以我的问题是 PHP 是否有任何配置选项不加载不稳定的扩展?顺便说一句,我确实在更改 ini 文件后重新启动了我的服务器。
4 回答
您现在可能在您的机器上安装了两个 php。Mountain Lion 附带预装的 php 版本。尝试locate php.ini
在终端中找出安装了多少个 php.inis。
在您的 phpinfo() 页面中,还注明了正在使用的 php.ini。您可能想要打开用于 phpinfo() 的确切 php.ini 并确保已加载扩展。应该有两行像
extension=/path/to/gemagicext/gmagic.so
extension=/path/to/imagick/imagick.so
我在 php-fpm 和 nginx 服务器上遇到了类似的问题。问题是由于更新的 php 配置没有反映在当前活动的 php-fpm 工作进程中。我必须手动终止fpm 进程并再次重新启动它以获取更新的扩展信息。
对我有用的步骤:
1) 寻找活跃的 php-fpm 进程
ps ax | grep "fpm"
大多数情况下,这将列出多个进程
2)手动杀死进程
kill -9 [pid_got_from_previous_command]
3)重启php-fpm进程
sudo service php5-fpm start
注意:由于旧的子进程保留了旧的配置,因此尝试类似sudo service php-fpm reload
或sudo service php-fpm restart
不起作用的方法。杀死活动进程并重新启动 php fpm 为我更新了 phpinfo。
我有同样的问题 CentOS 6.6 x64, php 5.5.27 我按照 http://php.net/manual/en/imagick.installation.php中的步骤操作
首先从这里下载 ImageMagick 安装的 tar 映像:sourceforge.net/projects/imagemagick/files/
解压它,然后从终端发出以下命令:
1. "cd ImageMagick-6.9.1-10" - go where you placed the folder
2. ./configure
3. make
4. make install
5. make check
6. install imagick extension from pecl.php.net/package/imagick/download 3.1.2
7. cd imagick-3.1.2
8. phpize
9. ./configure --with-imagick=/opt/local
10. make
11. make install
12. Copy imagick.so in your PHP extensions folder and add extension=imagick.so in php.ini
重启apache:service httpd restart
我确信这个问题与您的扩展和 PHP 服务器兼容性有关。我在创建自己的扩展时遇到了这样的问题。你的扩展应该在三个主要属性上与你的 PHP 服务器兼容:
1- PHP 服务器配置的 Zend API 编号(在 phpinfo() 中可以找到此编号),此编号应与构建时的扩展头文件相同。
2- PHP 服务器上的编译器版本和扩展必须相同。
3- PHP 服务器中的线程安全很重要。如果您使用线程安全服务器,那么您的扩展必须使用 php 线程安全库构建,如果您使用非线程安全服务器,您应该使用 PHP-nts 库构建您的扩展。