Попытка загрузить класс "Imagick" из глобального пространства имен в symfony3 - PullRequest
0 голосов
/ 07 июня 2019

Так что в настоящее время я использую расширение «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

1 Ответ

0 голосов
/ 09 июня 2019

Я нашел решение, я поставил ответ для кого-то, у кого такая же проблема:

Вы должны добавить следующие строки

;on Windows:
extension=php_imagick.dll
;on UNIX:
extension = imagick.so

до C:\wamp64\bin\php\phpx.x.x\php.ini

не до C:\wamp64\bin\apache\apachex.x.x\bin\php.ini

потому что первым php.ini является файл, используемый PHP CLI, то есть локальным веб-сервером Symfony.

Удачного кодирования!

...