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.

Поскольку это общий хост, провайдер должен помочь решить эту проблему.

Другие вопросы по тегам