Imagick和PHP的问题

时间:2013-11-23 14:48:17

标签: php imagick

使用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

我该怎么办?

2 个答案:

答案 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

进行了一次治疗