League / Flysystem fstat () ожидает, что параметр 1 будет ресурсом, объект задан

Я нахожусь в процессе обновления проекта с Laravel 5 до 5.1. Один пакет, который нужно было обновить, был League\Flysystem,

я использую Intervention\Image изменить размер изображения, а затем Flysystem, чтобы сохранить его на S3. Код ниже работал с 5.0 —

// Album ID
$id = $request->input('id');
// Filename for this photo
$filename = str_random() . ".jpg";

// Get the storage disk
$disk = Storage::disk('s3');

// Resize the photo
$image = Image::make($request->file('photo'));
$image->orientate();
$image->resize(1024, 748, function ($constraint) {
$constraint->aspectRatio();
});
$image->encode('jpg');
// Save the photo to the disk
$disk->put("img/album/$id/$filename", $image);

Но сейчас я получаю следующую ошибку:
fstat() expects parameter 1 to be resource, object given, брошенный в league\flysystem\src\Util.phpлиния 250

я использую "intervention/image": "~2.1", "league/flysystem-aws-s3-v3" : "~1.0",

Есть идеи, что может быть причиной этого?

8

Решение

Возможно, вам повезло до того, как кто-то наложил на вас $image объект сделал строку из этого, я думаю, простое изменение вашей последней строки

$disk->put("img/album/$id/$filename", $image->__toString());

решит проблему и в любом случае безопаснее put Метод официально принимает только строки (и рассматривает реализацию ресурсов php как wekk).
Это должно сделать вас совместимым с изменениями в долгосрочной перспективе.

11

Другие решения

Лучший способ сделать это — набрать приведенный кодированный вывод:

http://image.intervention.io/api/encode

$image->encode('jpg');
$disk->put("img/album/$id/$filename", (string) $image);
16

у меня есть версия "intervention/image": "^2.4",

__toString() не работает для меня, файл был создан поврежден …
я сделал ->stream()->getContents(),

0
По вопросам рекламы [email protected]