【问题标题】:PHP extensions not loading in phpinfoPHP 扩展未在 phpinfo 中加载
【发布时间】:2013-02-22 16:41:57
【问题描述】:

所以我在 Mountain Lion 上运行 MAMP,并使用 pecl 安装了 gmagick 和 imagick,两者都是候选版本(主要是因为 gmagick 没有稳定的版本并且 imagick 3.0.0 没有安装,它给出了一个错误)。当我在终端中运行 php -i 而不是在 phpinfo() 中运行时,模块会出现,我已经检查了 php.ini,两者都是相同的,所以这不是问题。但是我已经安装了 bitset(这是一个稳定的版本) 并且它出现在 phpinfo() 和 php -i 中。所以我的问题是 PHP 是否有任何配置选项不加载不稳定的扩展?顺便说一句,我确实在更改 ini 文件后重新启动了服务器。

【问题讨论】:

  • 你检查过Apache目录下的php ini文件吗?

标签: php imagick php-extension gmagick


【解决方案1】:

我在 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:服务httpd重启

【讨论】:

    【解决方案2】:

    我在使用 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 reloadsudo service php-fpm restart 之类的方法不起作用,因为旧的子进程保留了旧的配置。杀死活动进程并重新启动 php fpm 为我更新了 phpinfo。

    【讨论】:

    • 你是对的。另一种解决方案是重新启动服务器,但您的解决方案更好。 (没有停机时间)
    【解决方案3】:

    我确定这个问题与您的扩展和 PHP 服务器兼容性有关。我在创建自己的扩展时遇到了这样的问题。您的扩展应在三个主要属性上与您的 PHP 服务器兼容:

    1- PHP 服务器配置的 Zend API 编号(在 phpinfo() 中可以找到该编号),该编号应与构建时的扩展头文件相同。

    2- 你的 PHP 服务器和你的扩展上的编译器版本必须相同。

    3- PHP 服务器中的线程安全很重要。如果您使用线程安全服务器,那么您的扩展必须使用 php 线程安全库构建,如果您使用非线程安全服务器,您应该使用 PHP-nts 库构建您的扩展。

    【讨论】:

      【解决方案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

      【讨论】:

      • 是的,当我运行 phpinfo() 时,它会显示我使用的是哪个 php.ini(正确的),它与我在运行 php -i 时得到的 php.ini 相同控制台,所以这不是问题
      猜你喜欢
      • 1970-01-01
      • 2015-08-27
      • 2016-07-28
      • 2020-02-23
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      相关资源
      最近更新 更多