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

Перезапустите php

service php5-fpm restart

В моем случае он был установлен в контейнере Docker, но я запускал свой сценарий CLI с хост-машины, на которой не было Imagick.

Другие вопросы по тегам