簡體   English   中英

PHP 警告:模塊“imagick”已加載到第 0 行的未知中

[英]PHP Warning: Module 'imagick' already loaded in Unknown on line 0

我有一個簡單的測試文件,其中唯一的 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 in my error log。 有什么建議嗎?

打開您的 php.ini 文件並對此發表評論

;extension=imagick.so

這解決了我的問題

extension=imagick.so在我的 php.ini 中不存在,所以我通過在 Home >> Software >> Module Installers - "PHP Pecl" Installer 下使用 WHM 重新安裝imagick (3.4.4)解決了這個問題。

沒有更多的錯誤(到目前為止)。

僅作記錄,因為它可能會幫助使用共享主機 (cPanel) 的其他人。

我在共享主機 php7.2 上遇到錯誤:模塊 'imagick' 已經加載到第 0 行的未知中

一開始托管服務提供商說這是我的錯誤配置(運行 Yii2.16)。 但在我向他們展示之后,所有互聯網都將這個問題與服務器配置相關聯——他們開始聽我的。 在我證明了php7.1沒有錯誤之后,他們開始搜索錯誤。

他們確認,他們將(錯誤之前)7.2 更新到新版本(7.2.14),修復了一些其他錯誤,但 Imagick 錯誤開始出現。 現在他們也找到了解決辦法。 正如他們告訴我的那樣 - 錯誤出現在 PERL 模塊或 PEAR package 的配置中,但他們沒有告訴我真正的問題。

解決方案,如果您在共享主機上 - 與您的提供商交談並試用 PHP 版本(如果您可以更改它們)。

確保您只激活了一次 imagick。
如果 windows:
活動extension=php_imagick.dll和評論/刪除喜歡;extension=imagick
按照本教程

安裝 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。 我現在將刪除imagick.ini ,重新啟動php。 解決了!

這些庫也可以使用 /etc/php.d 中的 ini 文件加載。 確保它不在此處和 php.ini 中的文件中。

通過關於這個問題的乏味時刻,我找到了一個解決方案,如果您嘗試使用 PECL 卸載和安裝 ImageMagick 並且在 imagick.so 文件中也有一些問題,則該解決方案可能能夠修復系統。 . 因為在帶有 CPanel 的服務器上愚蠢地“安裝源代碼”才能真正獲得 WebP 支持。

但是您不需要在下面復制我的方法,也許您只需要做所有事情:

實際上是在EasyApache 4中重新安裝這個模塊:

mod_lsapi

重新安裝該模塊后,您將能夠通過系統中的該模塊重置 php.ini 文件。 然后很容易等待另一個完整的 error_log 從現在開始可能不會發生。

選項 2:

我嘗試使用 yum 甚至卸載 PECL 刪除所有 rpm,並使用 ImageMagick 作為源文件,一開始就安裝了整個系統錯誤。 ImageMagick 源代碼很難找到將 imagick.so 文件放入擴展文件夾的正確位置。 因為它在另一個帶有 CPanel 的目錄中:

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

您可能希望使用“.Important that only if you have been made from source in your Cpanel system.”來卸載 all.rpm。 僅當您嘗試過源安裝時。

yum remove ImageM* 

並從源代碼安裝。 如果你不能這樣做,請從源代碼中制作 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

我不知道為什么,但我在 /etc/php.d/ 中有兩個 imagick.ini 文件

    # ls -l /etc/php.d/*imag*
    -rw-r--r--. 1 root root  21 15. Aug 11:46 /etc/php.d/20-imagick.ini
    -rw-r--r--. 1 root root 530 12. Jan 2022  /etc/php.d/40-imagick.ini

我注釋掉了一個

extension=imagick.so

這些文件之一中的行,錯誤消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM