ImagickException Unable to read image blob

場景

在使用PHPImagick擴展讀取圖片文件是報錯: Unable to read image blob

經過調試, 發現當圖片寬度大於1400px時, 就會讀取失敗, 小於1400px時完全正常.

最終, 經過多次測試, 發現是Imagick版本的問題, 如下是我出錯時的版本(ImageMagick 6.9.10):

image-20211023170712555

解決

ImageMagick更新到7.0以上就可以了, 當前最新是7.1, 就直接裝7.1了.

更新步驟如下:

**1. 安裝最新版ImageMagick. **

因爲我使用debian系統, 故使用了源碼安裝. 官方有安裝教程, 跟着來就行: https://imagemagick.org/script/install-source.php

# 當前最新版是7.1
git clone https://github.com/ImageMagick/ImageMagick.git ImageMagick-7.1.0
cd ImageMagick-7.1.0
./configure
make
make install 
ldconfig /usr/local/lib

到這就更完了, 看一下命令行版本:

image-20211023171528822

2.更新 PHP 擴展

# 這兩個命令執行哪個都行, install 會自動安裝最新並覆蓋舊版本
pecl install imagick
pecl upgrade imagick

3.重啓 php-fpm

至此, 再次查看, 版本已經更新成功, 在跑剛纔的程序就可以啦.

image-20211023171916900

注意: 如果到這裏, 顯示的版本號還是沒有更新的, 請檢查php.ini配置文件:

# 若配置如下, 則將其修改爲: imagick.so
extension=imagick

我在某些docker容器中, 內置了imagick, 安裝最新版後其使用的還是內置版本. 故這裏要修改一下.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章