尝试从symfony3的全局命名空间中加载类“ Imagick”

时间:2019-06-07 07:16:04

标签: php symfony imagick

所以我目前正在为symfony项目使用“ Imagick”扩展名,但出现此错误:

ClassNotFoundException:“试图从全局名称空间中加载类“ Imagick”。您忘记了“ use”语句吗?”

奇怪的是,它在所有本机php脚本中都能正常工作,但在symfony项目中却无法正常工作!

我做了一些研究,发现我还需要为CLI启用imagick。.但是我没有找到任何方法来解释如何制作它。

因此,我通过以下代码段验证了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)

建筑=> x64

imagick模块版本=> 3.4.3

ImageMagick版本=> ImageMagick 6.9.3-7 Q16 x64 2016-03-27

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,并为遇到相同问题的人提供了答案:

您应该添加以下几行

;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 Local Web Server也使用了该文件。

编码愉快!