Я работаю над приложением на Laravel, которое использует библиотеку Intervention Image и Imagick для загрузки и изменения размеров изображений на лету. Вот мой код:
public function saveImage($directory, $imageObject) {
$imageFile = $imageObject->store('app/'.$directory);
$filename = str_replace('app/'.$directory.'/','',$imageFile);
$imageObject = Storage::get($imageFile);
$img = Image::make($imageObject);
$img->resize(null, 40, function ($constraint) {
$constraint->aspectRatio();
});
$imageFile = $img->stream();
Storage::put('app/'.$directory.'/'.$filename, $imageFile->__toString());
// $img->save($imagePath);
return $filename;
}
Однако проблема возникает на линии Image::make($imageObject). Единственная ошибка, которую возвращает Heroku, - это 503 Service Unavailable. Пожалуйста помоги.
Спасибо друг. Это помогло.






Imagick - это библиотека, которую необходимо установить на машине. От heroku docs:
The following built-in extensions have been built “shared” and can be enabled through composer.json (internal identifier names given in parentheses):
Добавьте код из этого ответа в свой composer.json-https://stackoverflow.com/a/35660753/2460352:
...
"require": {
"ext-imagick": "*",
...
}
}
Тогда вам понадобится более надежное ведение журнала для определения вашей проблемы. devcenter.heroku.com/articles/php-logging В этой ссылке есть раздел о том, как заставить laravel выводить ошибки.
Это помогло. Я обновил переменную среды в Heroku и обнаружил, что ошибки php появляются прямо на моем экране. Проблема заключалась в том, что библиотека gd не была установлена, хотя я использовал Imagick в config / image.php
установите в своем журнале config / app значение errorlog, то есть stdout, и вы должны получить дополнительную информацию в своем журнале heroku (logplex), как указано в docs.