我正在尝试在作业控制器中使用图像干预。首先,出现了"图像源不可读错误"。但后来我通过添加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库。
由于它是一个共享主机,因此提供商有责任帮助解决此问题。