【问题标题】:Class 'Imagine\\Imagick\\Imagine' not found Symfony 2.1Symfony 2.1 未找到“Imagine\\Imagick\\Imagine”类
【发布时间】:2013-01-04 16:44:39
【问题描述】:

我想将LiipImageBundle 集成到我的 Symfony 2.1 项目中。

我通过 composer 安装了包和 imagine/Imagine v.0.4.0 包。 它似乎工作正常,除了修改后的图像没有保存。

error.log 声明:

PHP Fatal error: Class 'Imagine\\Imagick\\Imagine' not found in /var/www/app/cache/prod/appProdProjectContainer.php on line 365

appProdProjectContainer.php 中的这一行声明:

protected function getLiipImagineService()
{
    return $this->services['liip_imagine'] = new \Imagine\Imagick\Imagine();
}

我不知道这是否正确。你们知道为什么 PHP 找不到类吗?

【问题讨论】:

  • 您是否安装了imagick?我唯一能想到的是Imagine\Imagick\Imagine如果没有安装imagick会抛出一个错误,所以autoloader认为它无法加载Imagine\Imagick\Imagine
  • 是的,我做到了。 phpinfo() 声明它处于活动状态并使用模块版本3.1.0RC2
  • 顺便说一句:我刚刚卸载了 imagick,如果是这样,Symfony 将在 Imagine 类中抛出一个错误。所以这个类确实没有找到,但它就在那里。
  • 我切换到 gd 而不是 imagemagick 并且它可以工作。

标签: php symfony symfony-2.1 liipimaginebundle


【解决方案1】:

您是否已将 Imagine 添加到自动加载。如果你还没有,那么你可以这样做:

  1. 打开 vendor/composer/autoload_namespaces.php
  2. 添加

    'Imagine' => $vendorDir .'/imagine/Imagine/lib/',
    'Liip\\ImagineBundle' => $vendorDir . '/liip/imagine-bundle/',
    

【讨论】:

  • 你不应该改变vendor/composer/autoload_namespaces.php的内容,因为vendor文件夹通常不在SCM下,这个文件可以自动重新生成。
  • 无处可去。运行php composer.phar dumpautoload(当然你必须使用composer来安装Imagine)它应该会改变所有需要的东西。
  • composer 也会在使用命令updateinstall 时重新生成此文件。
猜你喜欢
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 2014-04-19
  • 2013-04-11
  • 2013-07-12
  • 2016-12-10
  • 2015-06-23
  • 2018-03-24
相关资源
最近更新 更多