首页 > 解决方案 > Imagick 安装成功但发生错误:未捕获错误:找不到类 'imagick'

问题描述

我已经阅读了十几篇文章,但没有一篇提供适当的解决方案。我可以通过 SSH 访问我的服务器,并通过 composer 安装了 imagick,如下所示:

composer require calcinai/php-imagick

该库已成功安装在我的本地服务器(开放服务器)和远程服务器上。然后我做:

$imagick = new imagick();
$imagick->setResolution(300, 300); 

在我的本地机器上一切正常,但在我的网络托管上它返回未捕获的错误:找不到类 'imagick'。我需要require为所有文件或其他东西做吗?因为我尝试在开头添加以下内容:

require_once $_SERVER['DOCUMENT_ROOT'].'/vendor/autoload.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/vendor/calcinai/php-imagick/src/Imagick.php';

现在它向我抛出了这个:未捕获的异常:Imagick::setResolution 未实现

请指教。

标签: phpcomposer-phpimagick

解决方案


require_once $_SERVER['DOCUMENT_ROOT'].'/vendor/calcinai/php-imagick/src/Imagick.php';

以上行不是必需的。正如评论中提到的,Composer 对类名的大小写非常严格,并且不鼓励对类名的大小写进行调整,因为 composer 在其类映射中对它们进行了适当的严格自动加载。

$imagick = new Imagick();

上一行是正确的初始化方式。就异常而言,他们自己的内部实现将其作为尚未实现的东西抛出。下面是他们拥有的方法体,

方法定义:

/**
 * @param float $x_resolution
 * @param float $y_resolution
 * @return bool
 */
public function setResolution($x_resolution, $y_resolution)
{
    throw new Exception(sprintf('%s::%s not implemented', __CLASS__, __FUNCTION__));
}

就远程服务器而言,那里的一切也都表现得相当好。如果你真的需要一些实现setResolution,其他一些库可能会有所帮助。


推荐阅读