Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

League/Flysystem fstat() expects parameter 1 to be resource, object given

I am in the process of upgrading a project from Laravel 5 to 5.1. One package that needed to be updated was League\Flysystem.

I am using Intervention\Image to resize an image and then Flysystem to save it to S3. The code below was working with 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);

But now I am receiving the following error: fstat() expects parameter 1 to be resource, object given, thrown in league\flysystem\src\Util.php, line 250.

I am using "intervention/image": "~2.1", "league/flysystem-aws-s3-v3" : "~1.0",

Any ideas what might be causing this?

like image 715
NightMICU Avatar asked Jun 09 '15 17:06

NightMICU


2 Answers

The better way to do this is to type cast the encoded output:

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

$image->encode('jpg');
$disk->put("img/album/$id/$filename", (string) $image);
like image 145
Citizen Avatar answered Oct 16 '22 05:10

Citizen


You might have been lucky before some type casting on your $image object made a string out of it, I guess a simple change of your last line to

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

will fix the problem and is safer anyway as the put method officially only accepts strings (and looking at the implementation of php resources as wekk).
That should keep you compatible to changes in the long run.

like image 43
ChristianM Avatar answered Oct 16 '22 05:10

ChristianM