Reputation: 1
I am running my project with docker. I am using the function
Storage::disk('local')->put("/algorithms/".$this->algorithm_id."/newfile.csv", $csv_newfile->__toString());
I want to store this file as var/www/html/Laravel/resources/app/algorithms/algorithm_id/newfile
But it stores it one directory up from project folder.
So
My project sits in
/var/www/html/Laravel
But it creates this file in /var/www/html/algorithms/algorithm_id/newfile
I probably have set up the the projects root directory in /var/www/html
(?) But I can't find where have I done this.
Could someone explain what could be the problem?
Here's my /config/filesystems.php file
<?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", "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'),
],
],
];
Upvotes: 0
Views: 5596
Reputation: 348
I have run in to a problem similar to yours. Here was the solution that worked for me:
Create a new disk to be place inside the directory
'web_site_root' => [
'driver' =>'local',
'root' => base_path();
]
And you want to remove the first /
The code:
Storage::disk('web_site_root')->put("algorithms/".$this->algorithm_id."/newfile.csv", $csv_newfile->__toString());
I don't know why, but somehow the first /
made the file, in my case, to be save in the root as well.
Upvotes: 1