#module #php #imagick
#модуль #php #imagick
Вопрос:
У меня проблема с этим модулем.
На моем локальном сервере я открываю свой php.ini, и у меня есть модуль imagick в списке. Теперь я сменил сайт на веб-сервер, но в php.ini модуль не отображается.
Я поговорил с компанией, у которой есть веб-сервер, и ответ таков: «модуль установлен, и покажите мне это:»
root@dime38 [~]# convert
Version: ImageMagick 6.2.8 08/25/10 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html
но когда я использую этот код:
<?php
$image = new Imagick();
$image->newImage(100, 100, new ImagickPixel('red'));
$image->setImageFormat('png');
header('Content-type: image/png');
echo $image;
?>
я просто получаю это:
Fatal error: Class 'Imagick' not found in /home/empreg0l/public_html/modulo.php on line 3
Но тот же код работает на моем локальном хосте.
В чем проблема? (Возможно, расширение прокомментировано в php.ini? или существует какая-либо проблема в коде?)
Спасибо
Ответ №1:
Существует разница между двоичным файлом ImageMagick (который может быть вызван с помощью convert
команды) и расширением IMagick PHP. Даже если двоичный файл установлен, это не означает, что расширение PHP установлено.
Вашему провайдеру пришлось бы явно активировать это в PHP своего сервера.
Если они этого не сделают, вам придется воссоздать команды IMagick в качестве параметров командной строки и вызвать их через exec()
.
Ответ №2:
Чтобы установить imagick для php:
apt-get install php5-imagick
Ответ №3:
Используйте get_loaded_extensions, чтобы подтвердить, что у вас установлено расширение imagick PHP.
var_dump(get_loaded_extensions());
Ответ №4:
apt-get install pkg-config libmagickwand-dev -y
cd /tmp
wget https://pecl.php.net/get/imagick-3.4.0.tgz
tar xvzf imagick-3.4.0.tgz
cd imagick-3.4.0
phpize
./configure
make install
rm -rf /tmp/imagick-3.4.0*
echo extension=imagick.so >> /etc/php/7.0/cli/php.ini
echo extension=imagick.so >> /etc/php/7.0/fpm/php.ini