2015-07-01 4 views
4

У меня возникла проблема с файловой системой Laravel 5 при загрузке файлов в ведро S3. Линия, которая работает с файловой системой является:Неправильный путь к адаптеру flysystem S3 в Laravel 5

Storage::disk('s3')->put($slug, $img); 

Он работает, как это должно быть для:

Storage::disk('local')->put($slug, $img); 

Но когда я изменяю диск в S3 он выдает следующее сообщение об ошибке:

Class 'League\Flysystem\AwsS3v3\AwsS3Adapter' not found 

В соответствии с документами L5 у меня есть следующее требование в моем composer.json

"league/flysystem-aws-s3-v2": "~1.0" 

который установлен AWS лиги flysystem адаптера под:

League\flysystem-aws-s3-v2\ 

Я попытался обновить путь в fileSystemManager.php в папке файловой системы поставщика к AWS flysystem пути установки, но он по-прежнему не работает. Кажется, я не могу найти кого-либо еще, кто испытал это поведение.

Свежая пара глаз или знающая голова, которая могла бы узнать больше о Ларавеле, чем мне было бы здорово. Я действительно не могу показаться проблемой.

UPDATE

Я свежей установки АМС flysystem и не я получаю следующее:

ErrorException in Util.php line 250: 
fstat() expects parameter 1 to be resource, object given 

ответ

11

Ok поэтому я установил начальную проблему путем удаления aws/aws-sdk-php : "^2.8.*, что я имел в моем composer.json и запустил новый «композитор», требующий лиги/flysystem-aws-s3-v3 ~ 1.0. Это фиксировало начальную ошибку при поиске летной системы S3.

Вторая ошибка fstat() expects parameter 1 to be resource, object given связаны с моей попыткой передать объект изображения методы пут:

Storage::disk('s3')->put($slug, $img); 

, когда он ожидает строку. Это было зафиксировано путем стягивания объекта $ img

Storage::disk('s3')->put($slug, $img->__toString()); 

Надеюсь, это поможет кому-то еще, кто может столкнуться с этой проблемой.

+2

Спасибо за подсказку! Любая идея, почему нам нужно подстроить объект? Это немного странно. Благодаря! – commandantp

+1

Да, метод 'PUT' принимает только строки (и некоторые ресурсы php). Я не знал об этом в Ларавеле, пока не столкнулся с проблемой. В более старых версиях Laravel переданное изображение было типом для вас в фоновом режиме с чем-то вроде '(string) $ img'. Это не так, поэтому вы должны отбросить объект как строку, чтобы метод 'PUT' принял его как действительный. –