'Laravel Impossible to Create Root Directory
I've checked out the other posts about this, mine seems to be unique for some reason
Essentially what I'm trying to do is store uploaded photos in the public directory for easy access, however when I store them I'm trying to store them in a user specific folder, so
/public/photos/$User->id/$filename.jpg
Right now I have Dropzone uploading the file, and I've added to my filesystem.php this statement
'public_uploads' => [
'driver' => 'local',
'root' => public_path(),
],
So in theory when I access that using
Storage::disk('public_uploads')
it should retrieve the correct path
Here's my controller as well
$User = User::find(Auth::user()->id);
$Photo = Request::file('photo');
Storage::disk('public_uploads')->put("photos/$User->id", $Photo);
Then I get this error from Laravel on upload
{message: "Impossible to create the root directory "/censoredfilesystem/public/Photos/1".",…}
No idea where the period is coming from and any help is greatly appreciated
Thanks all!
- Zach
Solution 1:[1]
Fixed it unknowningly by setting permissions according to comments, I used
chown -R www-data:root .
in the root of my directory
Edit: I used www-data:root, meaning set the owner of everything inside the Laravel directory to www-data (the webserver) and root being root obviously. If you do this you should do it with a non-root user or just to www-data
Solution 2:[2]
First, remove these folders
/public/storage
/storage/app/public
Then run the following command
php artisan storage:link
Solution 3:[3]
Another alternative is to go into /storage/app/public/ and create the folder in which you want to store the files if not existing i.e /storage/app/public/addfolder (and give yourseld permission to fopen and fwrite etc if admin or working on a server)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Ayman Elshehawy |
| Solution 3 | Olivier Elonga |
