所以我目前正在为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
答案 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也使用了该文件。
编码愉快!