Laravel - Использование работы с изображениями в Jobs. Ошибка imagettfbbox
Я пытаюсь использовать вмешательство изображения в моем контроллере заданий. Во-первых, "ошибка источника изображения не читается" вышел. Но тогда я исправил, добавив 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.
Есть ли способ, которым я могу решить это? Спасибо
1 ответ
Когда вы говорите, что он работает в обычном контроллере, вы имеете в виду, когда вы звоните по протоколу http (браузер / почтальон / и т. Д.)
Скорее всего, у вас есть две конфигурации PHP (в стандартной комплектации); один для Интернета (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
Надеюсь это поможет
------------Редактировать---------------
в соответствии с PHP.net imagettftext.
Эта функция требует как библиотеки GD, так и библиотеки "FreeType.
у вас должна отсутствовать библиотека FreeType в конфигурации CLI.
Поскольку это общий хост, провайдер должен помочь решить эту проблему.