使用Imagick的PHP脚本在运行时会出现此错误:
致命错误:第320行的/var/www/vhosts/example.com/script.php中找不到“Imagick”类
如果我从SSH运行php
,它会给我这个警告:
PHP警告:PHP启动:无法加载动态库 '/usr/lib/php/modules/imagick.so' - /usr/lib/php/modules/imagick.so:undefined symbol: 第0行的未知中的php_checkuid_ex
奇怪的是,Imagick总是有效...我试图安装它,但它说已经安装了所有东西。
lib位于正确的位置:
# locate imagick.so
/usr/lib/php/modules/imagick.so
我已尝试切换到imagick的beta版本,因为似乎Imagick在PHP版本5.4.2中存在问题,但问题仍未解决:
pear config-set preferred_state beta
pecl upgrade imagick
当我尝试升级时,配置失败了:
错误:无法找到MagickWand.h或magick-wand.h标头错误: `/ var / tmp / imagick / configure --with-imagick'失败
所以我创建了magick-wand.h
到/usr/include/ImageMagick/wand/MagickWand.h
的符号链接,但现在错误发生在make:
/var/tmp/imagick/imagick_helpers.c:859: error: 'PaletteBilevelMatteType' undeclared (first use in this function)
/var/tmp/imagick/imagick_helpers.c:859: error: (Each undeclared identifier is reported only once
/var/tmp/imagick/imagick_helpers.c:859: error: for each function it appears in.)
make: *** [imagick_helpers.lo] Error 1
ERROR: `make' failed
我该怎么办?
答案 0 :(得分:8)
好的,我已经解决了这个问题。
我删除了ImageMagick和ImageMagick-devel
yum remove ImageMagick
yum remove ImageMagick-devel
然后我从RPM安装了一个更新的版本:
cd /root
wget http://www.imagemagick.org/download/linux/CentOS/i386/ImageMagick-6.8.7-6.i386.rpm
wget http://www.imagemagick.org/download/linux/CentOS/i386/ImageMagick-devel-6.8.7-6.i386.rpm
rpm -Uvh ImageMagick-6.8.7-6.i386.rpm
rpm -Uvh --nodeps ImageMagick-devel-6.8.7-6.i386.rpm
请注意--nodeps,因为它正在寻找一个我找不到并且似乎不需要的ImageMagick-libs
然后我卸载了Imagick
pecl uninstall imagick
我用pecl再次编译它
pecl install imagick
一切正常(有一些警告,但在安装后它可以正常工作)。
此解决方案适用于CentOS 5/6 x86,如果您有不同的操作系统,请查找适用于您的arch或发行版的库。
答案 1 :(得分:4)
我通过卸载解决了我的问题,然后重新安装了' imagick'使用pecl命令扩展
以Root身份登录服务器并输入
pecl uninstall imagick
...然后
pecl install imagick
请注意这是在Centos 6.5上运行的PHP 5.4.42和ImageMagick 6.7.2-7
进行了一次治疗