我已经阅读了十几篇文章,但是没有一篇提供了合适的解决方案。我可以SSH访问我的服务器,并通过composer安装imagick,如下所示:
composer require calcinai/php-imagick
库成功安装在我的本地服务器(打开服务器)和远程服务器上。然后我做:
$imagick = new imagick();
$imagick->setResolution(300, 300);
在我的本地机器上一切正常,但在我的web托管上它返回未捕获的错误:类'imagick'未找到。我需要为所有文件做require
吗?因为我试图在开头添加以下内容:
require_once $_SERVER['DOCUMENT_ROOT'].'/vendor/autoload.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/vendor/calcinai/php-imagick/src/Imagick.php';
现在它抛出了这个:Uncaught Exception: Imagick::setResolution未实现
请建议。
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
的一些实现,一些其他的库可能会有帮助。