php - 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 未实现
请指教。
解决方案
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
,其他一些库可能会有所帮助。
推荐阅读
- css - css底部未定位在页面底部
- javascript - 显示html文件输入的进度?
- model-checking - 使用 nuXmv 进行属性验证期间控制台挂起
- javascript - 如何在js中读取嵌入的html字符串?
- neo4j - 将多个 apoc.path.expand 调用合二为一
- arduino - 如何使用 Arduino + micro SD 卡 + WiFi shield 模拟 USB pendrive?
- spring-boot - Lombok 源未在构建文件夹中生成,使用 Intellij IDEA 社区版 2019.2.4 和 gradle
- javascript - React Navigation + 高阶组件 (HOC) 用于检查身份验证/受保护的路由
- java - 尝试使用 Cuda 运行 Nd4j 时出错
- python - 如何将抓取功能应用于数据框中的整个列