Laravel Impossible to Create Root Directory

43,636

Solution 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

First, remove these folders

/public/storage

/storage/app/public

Then run the following command

php artisan storage:link
Share:
43,636
Zach Handley
Author by

Zach Handley

Updated on July 05, 2022

Comments

  • Zach Handley
    Zach Handley almost 2 years

    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