在PHP中没有加载Imagick

时间:2014-01-08 09:07:35

标签: php ubuntu imagick pecl

我已经在Ubuntu 12.04上安装了Imagick,但我仍然得到了

  

未找到“Imagick”类

当我通过终端检查时

  

php -m

我得到了

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
imagick
json
libxml
mbstring
mhash
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

但是当我通过PHP脚本检查加载的扩展名

  

get_loaded_extensions()

我没有想象力

Array
(
    [0] => Core
    [1] => date
    [2] => ereg
    [3] => libxml
    [4] => openssl
    [5] => pcre
    [6] => sqlite3
    [7] => zlib
    [8] => bcmath
    [9] => bz2
    [10] => calendar
    [11] => ctype
    [12] => curl
    [13] => dba
    [14] => dom
    [15] => hash
    [16] => fileinfo
    [17] => filter
    [18] => ftp
    [19] => gd
    [20] => gettext
    [21] => SPL
    [22] => iconv
    [23] => session
    [24] => intl
    [25] => json
    [26] => ldap
    [27] => mbstring
    [28] => mcrypt
    [29] => mssql
    [30] => standard
    [31] => mysqlnd
    [32] => mysqli
    [33] => mysql
    [34] => PDO
    [35] => pdo_mysql
    [36] => pdo_pgsql
    [37] => pdo_sqlite
    [38] => Phar
    [39] => posix
    [40] => Reflection
    [41] => imap
    [42] => shmop
    [43] => SimpleXML
    [44] => soap
    [45] => sockets
    [46] => exif
    [47] => sybase_ct
    [48] => sysvsem
    [49] => sysvshm
    [50] => tokenizer
    [51] => wddx
    [52] => xml
    [53] => xmlreader
    [54] => xmlwriter
    [55] => xsl
    [56] => zip
    [57] => apache2handler
    [58] => mhash
)

php -i显示

imagick 

module => enabled
imagick module version => 3.2.0RC1
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
ImageMagick version => ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org
ImageMagick copyright => Copyright (C) 1999-2011 ImageMagick Studio LLC
ImageMagick release date => 2012-08-17
ImageMagick number of supported formats:  => 206
ImageMagick supported formats => 3FR, A, AAI, AI, ART, ARW, AVI, AVS, B, BGR, BGRA, BMP, BMP2, BMP3, BRF, C, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FITS, FRACTAL, FTS, G, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, J2C, JNG, JP2, JPC, JPEG, JPG, JPX, K, K25, KDC, LABEL, M, M2V, M4V, MAC, MAP, MAT, MATTE, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NULL, O, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, R, RADIAL-GRADIENT, RAF, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, Y, YCbCr, YCbCrA, YUV

Directive => Local Value => Master Value
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0

在PHP日志中收到此错误

PHP Warning:  PHP Startup: imagick: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20121212

3 个答案:

答案 0 :(得分:2)

可能的解决方案:

仔细检查路径和php配置 - 你可能在另一个目录中有imagick.so文件,而不是php正在寻找扩展名吗?

1)找到正确的php.ini文件 - 在你的phpinfo()页面中指出php.ini实际上正在使用中。

2)确保你有imagick.so在正确的扩展目录(一个PHP真正使用)。要检查实际路径使用:

  

php-config --extension-dir

3)如果(1)和(2)没问题,请在php.ini

中启用扩展名
  

延长= imagick.so

4)重新启动web服务器,应该在phpinfo()

中存在(加载)imagick

备注#1

SO source post

请记住以下内容也适用

  

您的扩展程序应与三个主要的PHP服务器兼容   属性:

     

1-配置PHP服务器的Zend API编号(in   phpinfo()你可以找到这个号码),这个数字应该是一样的   在构建时使用扩展头文件。

     

2-您的PHP服务器和扩展程序上的编译器版本必须是   同样的。

     

3- PHP服务器中的线程安全很重要。如果你使用   线程安全的服务器然后你的扩展必须用PHP构建   线程安全的库,如果你使用非线程安全的服务器,你应该   使用PHP-nts库构建扩展。

备注#2

SO source post

请记住,如果.so文件损坏,在其他方面不正确(文件结构不正确)或依赖于丢失或无法加载的文件 - 扩展程序将不会加载并可用。

备注#3

请注意,“php -m”显示编译成php的模块,而不是加载的扩展。请尝试以下更多详细信息:

  

php -i

修改

提供的php错误

  

使用模块API编译的模块= 20090626
  使用模块API = 20121212

编译的PHP

清楚地表明您使用不正确的API版本编译的模块与php不匹配。 您需要手动构建PHP扩展。您最终使用的扩展程序似乎是针对不同版本的PHP而不是当前的PHP 5.5构建的。

有很多关于这个主题的教程,只记得使用适当版本的imagick和phpize。这应该可以帮到你:http://wiki.dreamhost.com/ImageMagick_and_imagick_php_module_on_shared_hosting

答案 1 :(得分:0)

重启php

service php5-fpm restart

答案 2 :(得分:0)

就我而言,我将其安装在Docker容器中,但是我正在从没有Imagick的主机上运行CLI脚本。