Imagick和PHP存在的问题

4
我的PHP脚本使用Imagick时出现以下错误:
严重错误:在/var/www/vhosts/example.com/script.php的第320行,找不到“Imagick”类
如果我从SSH运行php,则会收到此警告:
PHP警告:PHP启动时无法加载动态库'/usr/lib/php/modules/imagick.so' - /usr/lib/php/modules/imagick.so: undefined symbol: php_checkuid_ex in Unknown on line 0
奇怪的是,Imagick总是工作的...我已经尝试安装它,但是它说一切都已经安装好了。
该库位于正确的位置:
# 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个回答

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,在不同的操作系统上,请查找您的架构或发行版的库。


7
我通过使用pecl命令卸载并重新安装“imagick”扩展解决了我的问题。
请以Root身份登录服务器并输入以下命令:
pecl uninstall imagick

then...

pecl install imagick

请注意,此命令适用于Centos 6.5,运行PHP 5.4.42和ImageMagick 6.7.2-7。
成功运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接