【问题标题】:Failed to get Imagick load for php7.4无法为 php7.4 加载 Imagick
【发布时间】:2020-02-25 15:32:27
【问题描述】:

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

我刚更新到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

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

【问题讨论】:

    标签: php upgrade imagick


    【解决方案1】:

    我以这种方式在我的 raspi 上解决了它(根据此处的说明:How to Install PHP imagick extension):

    • sudo apt install php7.4-dev(如果尚未安装)
    • 检查您的pecl 版本(必须与7.4 匹配):pecl version
    • 确保sed 可以从/bin/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】:

      也遇到了这个错误,花了整整 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
      

      我检查了是否使用php -m | grep imagick 安装并使用ll /usr/lib/php/20190902 进行了双重检查,然后在一切正常之前运行了命令sudo systemctl restart apache2

      【讨论】:

        【解决方案3】:

        要安装 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

        【讨论】:

          猜你喜欢
          • 2017-01-29
          • 2012-09-29
          • 2021-09-30
          • 2019-04-03
          • 2014-06-11
          • 2016-08-15
          • 2021-01-17
          • 2023-03-18
          • 2013-04-27
          相关资源
          最近更新 更多