php - Laravel - 在 Jobs 中使用图像干预。图像ttfbbox错误
问题描述
我正在尝试在我的作业控制器中使用图像干预。首先,“图像源不可读错误”出来了。但后来我通过添加 storage_path 来修复。现在它显示此错误:
Call to undefined function Intervention\Image\Gd\imagettfbbox()
当我想在图像上写字体时会发生这种情况。这些是我的代码:
$img->text($line, $x_subject, $y, function($font) use ($font_size_subject, $font_path){
$font->file(storage_path($font_path));
$font->size($font_size_subject);
$font->color('#000000');
$font->align('center');
$font->valign('middle');
});
当我尝试在普通控制器中使用它时没有错误。当我在 Jobs 控制器中使用图像干预时,才会出现此错误。
有什么办法可以解决这个问题吗?谢谢
解决方案
当您说它在普通控制器中工作时,您的意思是当您从 http 协议(浏览器/邮递员/等)调用它时
您很可能有两个 PHP 配置(作为标准);一种用于 Web (FPM),另一种用于控制台 (CLI)。
仅在使用作业控制器时出现错误的原因是您的 PHP CLI 配置中缺少 GD 扩展。
您可以在控制台中检查 GD 扩展是否启用了php -m |grep gd
. 如果启用,你应该有这样的东西
$ php -m |grep gd
12:gd
如果您没有得到第二行,则需要在正确的 ini 文件(用于 CLI 的文件)中启用扩展。
如果您不知道它在哪里,请尝试运行php -i | grep 'Configuration File'
,您应该会得到如下信息:
Configuration File (php.ini) Path => /etc/php/7.x/cli
Loaded Configuration File => /etc/php/7.x/cli/php.ini
希望这可以帮助
- - - - - - 编辑 - - - - - - - -
该函数需要 GD 库和 » FreeType 库。
您必须在 CLI 配置中缺少 FreeType 库。
由于它是共享主机,因此提供者有责任帮助解决此问题。
推荐阅读
- deep-learning - 在带有 OpenCL 1.1 EP 的 Vivante GC2000 GPU 上是否有任何用于 CNN 的推理引擎?
- python - 如何检查对象是否存在(Selenium/Python)并执行 if-else
- javascript - 引导日期选择器禁用特定日期
- dagger-2 - 带有即时应用程序的匕首 2
- php - 如何将裁剪的图像从 Ajax 发送到 Symfony 控制器?
- r - ggplot (R) 中的第二个 Y 轴
- c++ - 为什么 cin 不在 for 循环中执行?
- python - Python - 如何通过其兄弟内容在 Selenium Webdriver 中查找元素?
- android - 推送通知仅适用于外国第三方推送提供商服务?
- go - 如果发生条件,停止读取频道的最佳方法