Imagick не загружается в PHP
Я установил Imagick на Ubuntu 12.04, но все равно получаю
Класс '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
2 ответа
Возможное решение:
Дважды проверьте пути и конфигурацию php - у вас может быть файл imagick.so в другом каталоге, а не тот, в котором php ищет расширения?
1) Найдите нужный файл php.ini - на странице phpinfo() указано, какой php.ini действительно используется.
2) Убедитесь, что у вас есть imagick.so в правильном расширении dir (тот, который действительно использует php). Для проверки фактического пути используйте:
php-config --extension-dir
3) если (1) и (2) в порядке, включите расширение в php.ini
расширение = imagick.so
4) перезапустите веб-сервер, имаджик должен присутствовать (загружен) в phpinfo()
Замечание № 1
Имейте в виду, что следующее также применимо
Ваше расширение должно быть совместимо с вашим сервером PHP в трех основных атрибутах:
1. Номер Zend API, с которым настроен ваш PHP-сервер (в phpinfo() вы можете найти этот номер), этот номер должен совпадать с вашим заголовочным файлом расширения во время сборки.
2. Версия компилятора на вашем PHP-сервере и ваше расширение должны совпадать.
3- Потокобезопасность в вашем PHP-сервере важна. Если вы используете потокобезопасный сервер, то ваше расширение должно быть построено с поточно-ориентированной библиотекой php, а если вы используете не потокобезопасный сервер, вы должны собрать свое расширение с библиотекой PHP-nts.
Замечание № 2
Имейте в виду, что если файл.so поврежден, некорректен другими способами (неправильная структура файла) или зависит от файлов, которые отсутствуют или недоступны для загрузки - расширение не будет загружено и доступно.
Замечание № 3
Обратите внимание, что "php -m" показывает модули, скомпилированные в php, а не загруженные расширения. Попробуйте ниже для более подробной информации:
php -i
РЕДАКТИРОВАТЬ
Предоставленная ошибка php
Модуль скомпилирован с модулем API = 20090626
PHP скомпилирован с модулем API=20121212
ясно указывает, что у вас есть модуль, скомпилированный с неправильной версией API, которая не соответствует php. Вам нужно будет создать расширение PHP вручную. Кажется, расширение, с которым вы работаете, построено на другой версии PHP, а не на текущей версии 5.5.
Есть множество уроков по этой теме, просто не забудьте использовать правильную версию imagick и phpize. Это должно помочь вам: http://wiki.dreamhost.com/ImageMagick_and_imagick_php_module_on_shared_hosting
В моем случае он был установлен в контейнере Docker, но я запускал свой сценарий CLI с хост-машины, на которой не было Imagick.