【问题标题】:Laravel - Using image intervention in Jobs. imagettfbbox errorLaravel - 在 Jobs 中使用图像干预。图像ttfbbox错误
【发布时间】:2019-01-03 17:17:31
【问题描述】:

我正在尝试在我的作业控制器中使用图像干预。首先,“图像源不可读错误”出来了。但后来我通过添加 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 控制器中使用图像干预时,才会出现此错误。

有什么办法可以解决这个问题吗?谢谢

【问题讨论】:

  • 你的电脑上是否完全安装了GD?
  • @H45H 是的,放在普通控制器中可以,在作业控制器中不起作用
  • “工作控制器”是什么意思?
  • 命令行的 php 配置可能与通过 Web 服务器访问的配置不同。

标签: php laravel intervention


【解决方案1】:

当您说它在普通控制器中工作时,您的意思是当您从 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 库。

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

【讨论】:

  • 您好,感谢您的详细解释。唯一的问题是,我无法编辑 php.ini 文件,因为我的网站位于共享主机中。当我执行 php -m |grep gd 时,我只得到“gd”。
  • @RedzwanLatif 检查 FreeType 扩展(编辑了我的答案)
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2017-08-03
  • 2018-05-20
  • 2015-10-21
  • 2019-01-16
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多