无法为php7.4获取Imagick加载

3

我知道有很多关于在Php7+上安装imagick的问题,但不幸的是,所有答案都没有解决我的问题。

我刚升级到php7.4,所以我按照之前在7.3、7.2上的设置来启用imagick,基本上如下:

echo extension=imagick.so > /etc/php/7.4/mods-available/imagick.ini

然后将软链接创建到"fpm"和"cli"目录:

ln -s /etc/php/7.4/mods-available/imagick.ini /etc/php/7.4/fpm/conf.d/20-imagick.ini
ln -s /etc/php/7.4/mods-available/imagick.ini /etc/php/7.4/cli/conf.d/20-imagick.ini

重新加载了php7.4-fpm,但imagick仍然无法加载。
使用"php -i | grep imagick"验证,但出现了一个错误:
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib/php/20190902/imagick.so (/usr/lib/php/20190902/imagick.so: cannot open shared object file: No such file or directory), /us
r/lib/php/20190902/imagick.so.so (/usr/lib/php/20190902/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

注意:
- 我已尝试清除php-imagick并重新安装,但无法正常工作
3个回答

8

我在树莓派上按照这里的指南(如何安装PHP imagick扩展)解决了这个问题:

  • sudo apt install php7.4-dev (如果没有安装)
  • 检查你的 pecl 版本(必须与7.4匹配):pecl version
  • 确保从 /bin/sed 可执行 sed 命令(pecl install 需要它在那里,我不得不从 /usr/bin/sed 创建符号链接)
  • sudo apt install libmagickwand-dev
  • sudo pecl install imagick

然后你就可以继续使用你已经完成的步骤了:

sudo echo extension=imagick.so > /etc/php/7.4/mods-available/imagick.ini
sudo ln -s /etc/php/7.4/mods-available/imagick.ini /etc/php/7.4/fpm/conf.d/20-imagick.ini
sudo ln -s /etc/php/7.4/mods-available/imagick.ini /etc/php/7.4/cli/conf.d/20-imagick.ini

之后,重新启动您的服务(php7.4-fpm、apache、nginx等)。

希望这能有所帮助!


2

我也遇到了这个错误,花费了整整两个小时才解决:

PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib/php/20190902/imagick.so (/usr/lib/php/20190902/imagick.so: cannot open shared object file: No such file or directory), /phpusr/lib/php/20190902/imagick.so.so (/usr/lib/php/20190902/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

尽管php -i显示我的配置的PHP版本为7.4,并且已安装imagick扩展,但我仍然无法摆脱这个警告。
所以在运行了大量命令并在网络上阅读后,我发现最明显的事情是检查给定的目录/usr/lib/php/20190902/
令人恼火的是,即使安装了imagick,这个目录中也缺少必要文件。
sudo apt install php-imagick

它并未安装在该目录中,而是针对php8.0版本安装的。这个命令

apt search imagick

已经展示过这个了。
php7.4-imagick/focal,now 3.5.1-1+ubuntu20.04.1+deb.sury.org+1 amd64 
  Provides a wrapper to the ImageMagick library

php8.0-imagick/focal,now 3.5.1-1+ubuntu20.04.1+deb.sury.org+1 amd64 [installed,automatic]
  Provides a wrapper to the ImageMagick library

但是我没有理解[已安装]缺失的含义。

最终的解决方案是使用特定于我的配置的PHP版本安装Imagick。

sudo apt install php7.4-imagick

我检查了是否已经安装imagick,使用命令php -m | grep imagick进行确认,并使用命令ll /usr/lib/php/20190902进行了双重检查。最后,运行命令sudo systemctl restart apache2,一切恢复正常。


2
要安装Imagick,请运行以下命令:
sudo apt-get install php-imagick

如果您需要特定的PHP版本(例如7.1),请运行以下命令:
sudo apt-get install php7.1-imagick

然后重新启动Apache:
sudo service apache2 restart

要检查是否已安装扩展程序,请运行以下命令:
php -m | grep imagick


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接