拉拉威尔-在乔布斯身上使用形象干预.imagettfbbox错误



我正在尝试在作业控制器中使用图像干预。首先,出现了"图像源不可读错误"。但后来我通过添加storage_path进行了修复。现在它显示了这个错误:

Call to undefined function InterventionImageGdimagettfbbox() 

当我想在图像上写字体时,就会发生这种情况。这些是我的代码:

$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扩展。

您可以在控制台中检查是否使用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。

此函数需要GD库和»FreeType库。

CLI配置中一定缺少FreeType库。

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

最新更新