Imagick Not Loaded in PHP

2019-08-21 08:58发布

I have installed Imagick on Ubuntu 12.04 but still i get

Class 'Imagick' not found

When I check through terminal

php -m

I get

[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]

but when i check loaded extension through PHP script

get_loaded_extensions()

I am not getting imagick

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 displays

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

getting this error in PHP log

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

2条回答
啃猪蹄的小仙女
2楼-- · 2019-08-21 09:31

Restart php

service php5-fpm restart
查看更多
你好瞎i
3楼-- · 2019-08-21 09:40

Possible solution:

Double check the paths and php configuration - you might have the imagick.so file in another directory, not the one php is looking for extensions in ?

1) Locate the proper php.ini file - in your phpinfo() page it is pointed which php.ini is actually in use.

2) Make sure you have imagick.so in proper extension dir (the one php really uses). To check the actual path use:

php-config --extension-dir

3) if (1) and (2) are OK, enable the extension in php.ini

extension=imagick.so

4) restart web server, the imagick should be present (loaded) in phpinfo()

Remark #1

SO source post

Bear in mind that the following also apply

Your extension should compatible with your PHP server in three main attributes:

1- The Zend API number which your PHP server is configured with ( in phpinfo() you can find this number), this number should be the same with your extension header file at build time.

2- The compiler version on your PHP server and your extension must be the same.

3- Thread safety in your PHP server is important. If you use thread-safe server then your extension must be built with php thread-safe library and if you use non-thread safe server you should build your extension with PHP-nts library.

Remark #2

SO source post

Keep in mind that if an .so file is corrupt, is improper in other ways (incorrect file structure) or depends on files that are missing or not available for load - the extension will not be loaded and made available.

Remark #3

Note that the "php -m" shows modules compiled into php, not the loaded extensions. Try the below for more detailed information:

php -i

EDIT

The provided php error

Module compiled with module API=20090626
PHP compiled with module API=20121212

clearly indicates that you have the module compiled with improper API version that does not match the php. You will need to build the PHP extension manually. The extension you've ended up with seems to be built against a different version of PHP, not your current PHP 5.5.

There are numerous tutorials concerning this topic, just remember to use the proper version of imagick and phpize. This should help you out: http://wiki.dreamhost.com/ImageMagick_and_imagick_php_module_on_shared_hosting

查看更多
登录 后发表回答