Так что в настоящее время я использую расширение «Imagick» для проекта Symfony, но я получаю эту ошибку:
ClassNotFoundException: "Попытка загрузить класс" Imagick "из глобального пространства имен. Вы забыли оператор" use "?"
Странно, но он работает нормально во всех родных php-скриптах, но не работает в проекте symfony!
Я провел некоторое исследование и обнаружил, что мне нужно включить imagick для CLI ... но я не нашел способа объяснить, как это сделать.
Итак, я проверил установку Imagick по этому фрагменту кода:
<?php
header('Content-type: image/jpeg');
$image = new imagick("C:/wamp64/www/test/image.jpg");
$image->thumbnailImage(100,0);
echo $image;
и я вижу, что изображение загружено правильно.
Также, когда я запускаю этот скрипт из браузера:
<?php
if (extension_loaded('imagick')){
echo 'imagick is installed';
} else {
echo 'imagick not installed';
}
?>
Я получаю:
imagick is installed
Но когда я запускаю этот файл из интерфейса командной строки, я получаю:
imagick not installed
В проекте Symfony я получаю этот журнал ошибок:
Uncaught PHP Exception Symfony\Component\Debug\Exception\ClassNotFoundException: "Attempted to load class "Imagick" from the global namespace. Did you forget a "use" statement?"
Функция Symfony
private function createThumbnail($path, $dest, $width, $height)
{
$im = new \Imagick();
$im->pingImage($path);
$im->readImage($path);
$im->thumbnailImage($width, $height);
$white=new \Imagick();
$white->newImage($width, $height, "white");
$white->compositeImage($im, \Imagick::COMPOSITE_OVER, 0, 0);
$white->setImageFormat('jpg');
$white->writeImage($dest);
$im->destroy();
$white->destroy();
}
Окружающая среда
Версия PHP => 7.1.9
Система => Windows 10
Сервер => Wamp64
версия Symfony => 3.1
Компилятор => MSVC14 (Visual C ++ 2015)
Architecture => x64
версия модуля imagick => 3.4.3
ImageMagick версия => ImageMagick 6.9.3-7 Q16 x64 2016-03-27