PHP警告:模块“imagick”已加载到未知的第0行

ygya80vv  于 2023-01-19  发布在  PHP
关注(0)|答案(8)|浏览(323)

我有一个简单的测试文件,其中唯一的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

z9smfwbn

z9smfwbn1#

打开你的php.ini文件并注解它

;extension=imagick.so

这解决了我的问题

kuuvgm7e

kuuvgm7e2#

确保你只激活imagick一次.
如果窗口:
激活extension=php_imagick.dll并像;extension=imagick一样注解/删除
follow this tutorial

b0zn9rqh

b0zn9rqh3#

extension=imagick.so不存在于我的php.ini中,所以我通过使用WHM在Home〉〉Software〉〉Module Installers -“PHP Pecl”Installer下重新安装imagick (3.4.4)来解决这个问题。
没有更多的错误(到目前为止)。

toe95027

toe950274#

只是为了记录在案,因为它可能会帮助其他人谁是共享主机(cPanel)。
我在共享主机php7.2上遇到错误:模块"imagick"已加载到未知的第0行
一开始主机提供商说是我的配置不好(运行Yii2.16),但我给他们看了之后,所有的互联网都把这个问题和服务器配置联系在一起--他们开始听我的,在我证明php7.1没有错误之后,他们开始搜索错误。
他们确认,他们更新了7.2(之前的错误)到新版本(7.2.14),这修复了一些其他的错误,但Imagick错误开始出现。现在他们也找到了修复。正如他们告诉我的-错误是在Perl模块或PEAR包的配置,但他们没有告诉我真正的问题。
解决方案,如果你是在共享主机-谈你的供应商和实验PHP版本(如果你可以改变他们)。

q8l4jmvw

q8l4jmvw5#

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

fkaflof6

fkaflof66#

在安装了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。问题解决了!

eivgtgni

eivgtgni7#

通过关于这个问题的乏味时刻,我发现了一个解决方案,如果你试图卸载和安装ImageMagick与PECL,也有排序的问题在这里与www.example.com文件.!因为哑"源安装"在服务器上与CPanel实际上获得WebP支持.imagick.so file. ! Because of dumbly "source installing" on a server with CPanel to actually get WebP support.
但你不需要复制我下面的方式,也许你只需要做:
实际上是在EasyApache 4中重新安装这个模块:
模块_逻辑状态
在你重新安装了mod之后,你就可以通过系统中的那个模块来重置php.ini文件了。然后很容易等待另一个完整的error_log,这可能从现在开始就不会发生了。
备选方案二:
我试过用yum甚至PECL卸载所有rpm,并使用ImageMagick作为源文件,一开始就错误地安装了整个系统。ImageMagick源文件很难找到合适的位置将www.example.com文件放在扩展文件夹中。因为它在CPanel的另一个目录中:imagick.so file in the extension folder. As it is in another directory with CPanel:

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

你可能想卸载所有的. rpm与"!重要的是,只有当你已经从源代码在您的Cpanel系统。"这是只有当你尝试源代码安装。

yum remove ImageM*

并从源代码Imagick安装。如果您无法通过启用共享从源代码创建ImageMagick。此外,您必须在进行源代码安装后从PECL中删除模块ImageMagick。在卸载并使用源代码版本的ImageMagick之前,请确保www.example.com仍在此目录中,同时模块仍与PECL一起安装:imagick.so is still in this directory when the module is still installed with PECL before you uninstall and use source version of ImageMagick:

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的用户。
要使共享启用正确安装ImageMagick源代码,请执行以下操作:

./configure --enable-shared
make 
make install
ktecyv1j

ktecyv1j8#

我不知道为什么,但我有两个imagick.ini文件在/etc/php.d/

# 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

行,错误就消失了。

相关问题