【问题标题】:PHP Warning: Module 'imagick' already loaded in Unknown on line 0PHP 警告:模块 'imagick' 已在第 0 行的未知中加载
【发布时间】:2011-07-05 18:35:56
【问题描述】:

我有一个简单的测试文件,其中只有 php 代码:

if (isset($_REQUEST['back']) && ($back != '')) { $back = $_REQUEST['back']; }
$filename = 'images/'.$back.'.jpg';
$file = (file_exists($filename)) ? $back : 'back1';

现在每次运行文件时,都会在错误日志中添加PHP Warning: Module 'imagick' already loaded in Unknown on line 0 这一行。请问有什么建议吗?

【问题讨论】:

  • 该错误意味着您尝试在某处加载模块两次。可能在 Apache 配置中。
  • 感谢 CFreak,但这与某处的那三行代码有关。你觉得这里有什么问题吗?
  • 问题不在于那三行。问题是“imagick”库被多次加载。问题出在php.inidl 正在加载库的某个地方。

标签: php error-handling


【解决方案1】:

打开您的 php.ini 文件并对此进行评论

;extension=imagick.so

这解决了我的问题

【讨论】:

    【解决方案2】:

    确保您只激活了一次 imagick。
    如果是窗户:
    活跃的extension=php_imagick.dll 和评论/删除喜欢;extension=imagick
    follow this tutorial

    【讨论】:

      【解决方案3】:

      extension=imagick.so 在我的 php.ini 中不存在,所以我通过在 Home >> Software >> Module Installers - "PHP Pecl" Installer 下使用 WHM 重新安装 imagick (3.4.4) 来解决它。

      没有更多错误(到目前为止)。

      【讨论】:

        【解决方案4】:

        仅作记录,因为它可能对共享主机 (cPanel) 上的其他人有所帮助。

        我在共享主机 php7.2 上有错误: 模块 'imagick' 已在第 0 行的 Unknown 中加载

        一开始托管服务提供商说这是我的错误配置(运行 Yii2.16)。但在我向他们展示之后,所有互联网都将这个问题与服务器配置相关联——他们开始听我的。在我证明了php7.1没有错误后,他们开始搜索错误。

        他们确认,他们将(错误之前)7.2 更新到新版本(7.2.14),修复了一些其他错误,但 Imagick 错误开始出现。现在他们也找到了解决办法。正如他们告诉我的那样 - 错误是在 PERL 模块或 PEAR 包的配置中,但他们没有告诉我真正的问题。

        解决方案,如果您使用共享主机 - 请与您的提供商联系并试用 PHP 版本(如果您可以更改它们)。

        【讨论】:

          【解决方案5】:

          这些库也可以使用 /etc/php.d 中的 ini 文件加载。确保它不在此处和 php.ini 中的文件中。

          【讨论】:

            【解决方案6】:

            安装 PHP 的 imagick 扩展后。当我执行php-fpm -v时,我遇到了同样的问题,如下:

            [root@localhost]# php-fpm -v
            [10-Oct-2018 16:00:33] NOTICE: PHP message: PHP Warning:  Module 'imagick' already loaded in Unknown on line 0
            

            因为我在安装 PHP 的 imagick 扩展时手动创建了 echo extension=imagick.so >> php.iniecho extension=imagick.ini。我现在将删除imagick.ini,重新启动php。解决了!

            【讨论】:

              【解决方案7】:

              通过关于这个问题的乏味时刻,我找到了一个解决方案,如果您尝试使用 PECL 卸载和安装 ImageMagick 并且在 imagick.so 文件中也遇到了一些问题,那么该解决方案可能能够修复系统。 !因为在使用 CPanel 的服务器上愚蠢地“源代码安装”才能真正获得 WebP 支持。

              但你不需要在下面复制我的方法,也许你只需要做:

              实际上是在EasyApache 4中重新安装这个模块:

              mod_lsapi

              重新安装模组后,您将能够通过系统中的该模块重置 php.ini 文件。然后很容易等待另一个完整的 error_log,这可能不会从现在开始。

              选项 2:

              我尝试使用 yum 删除所有 rpm,甚至卸载 PECL,并使用 ImageMagick 作为源文件,一开始就错误地安装了整个系统。 ImageMagick 源很难找到将 imagick.so 文件放入扩展文件夹的正确位置。因为它在另一个带有 CPanel 的目录中:

              /opt/cpanel/ea-php74/root/usr/lib64/php/modules
              

              您可能希望使用“!重要的是,仅当您已经从 Cpanel 系统中的源代码中进行了该操作时,才能卸载所有 .rpm。”仅当您尝试过源安装时。

              yum remove ImageM* 
              

              并从 Imagick 源安装。如果你不能做到这一点,从源代码制作 ImageMagick 并启用共享。此外,在进行源代码安装后,您必须从 PECL 中删除模块 ImageMagick。在卸载并使用 ImageMagick 的源代码版本之前,请确保 imagick.so 仍然在此目录中,而该模块仍与 PECL 一起安装:

              cp /opt/cpanel/ea-php74/root/usr/lib64/php/modules/imagick.so /root/tmp
              cp /root/tmp/imagick.so /opt/cpanel/ea-php74/root/usr/lib64/php/modules
              

              要查找您自己的模块文件夹,请使用:

              php -i | grep extension_dir
              

              请记住,我使用的是 php74 版本和 CPanel,因为这个问题只存在于这些 CPanel 用户或在不同位置使用 php74 的用户。并使用正确的 PHP 版本而不是 php74。

              要使共享启用正确安装 ImageMagick 源代码:

              ./configure --enable-shared
              make 
              make install
              

              【讨论】:

                猜你喜欢
                • 2015-12-22
                • 2016-04-10
                • 1970-01-01
                • 1970-01-01
                • 2016-05-25
                • 2016-04-14
                • 2016-06-06
                • 1970-01-01
                • 2016-08-09
                相关资源
                最近更新 更多