Laravel - 在乔布斯中使用图像干预。 imagettfbbox 错误

Laravel - Using image intervention in Jobs. imagettfbbox error

我正在尝试在我的作业控制器中使用图像干预。首先,"image source not readable error"出来了。但后来我通过添加 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 协议调用它时 (browser/postman/etc..)

您很可能有两个 PHP 配置(作为标准配置);一种用于 Web (FPM),一种用于控制台 (CLI)。

您仅在使用作业控制器时收到错误的原因是 PHP CLI 配置中缺少 GD 扩展。

如果使用 php -m |grep gd 启用了 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

希望对您有所帮助

------------编辑----------------

根据PHP.net imagettftext

This function requires both the GD library and the » FreeType library.

您必须在 CLI 配置中缺少 FreeType 库。

由于是共享主机,提供商有责任帮助解决此问题。