无法为 php7.4 加载 Imagick

Lar*_*dee 1 php upgrade imagick

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

我只是更新到 php7.4,所以我按照之前的设置从 7.3、7.2 到启用 imagick,基本上:

echo extension=imagick.so > /etc/php/7.4/mods-available/imagick.ini
Run Code Online (Sandbox Code Playgroud)

然后软链接到“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
Run Code Online (Sandbox Code Playgroud)

重新加载了 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
Run Code Online (Sandbox Code Playgroud)

注意:
- 我试图清除php-imagick 并重新安装它,但不起作用

小智 6

I solved it on my raspi this way (based on the instructions here: How to Install PHP imagick extension):

  • sudo apt install php7.4-dev (if not already installed)
  • check your pecl Version (must match with 7.4): pecl version
  • make sure that sed is executable from /bin/sed (the pecl install needs it to be there, I had to symlink it from /usr/bin/sed)
  • sudo apt install libmagickwand-dev
  • sudo pecl install imagick

Then you can carry on with the steps you already made:

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
Run Code Online (Sandbox Code Playgroud)

After that, restart your services (php7.4-fpm, apache, nginx, ...).

Hope this helps!