mardi 4 février 2020

Laravel writes in the root of my project rather than s3

I was trying to make a connection to s3 bucket in laravel and I was testing the connection so I made a simple function that writes a file in 's3' storage, but turns out that laravel is actually writing the files locally in the root of my code!! I already made an s3 bucket and made an Iam user with the needed permissions and I put the secrets in .env file but it's not working, if I try any other random disk driver it shows me an error and if I use the 'local' driver it's working fine (by writing the storage directory of the project). However, whenever I try to use s3, it doesn't show me any error but it writes in the project root!

my simple method in web.php:

Route::get('/test',function(){
 Storage::disk('s3')->put('hi.txt','hello');
return Storage::disk('s3')->get('hi.txt');

});

filesystems.php:

<?php

 return [

/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/

'default' => env('FILESYSTEM_DRIVER', 'local'),

/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/

'cloud' => env('FILESYSTEM_CLOUD', 's3'),

/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace"
|
*/

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL','www.google.com'),
    ],

],

];

I have been looking for a similar situation but I didn't find any. any help will be appreciated.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire