Загрузка файла Laravel Невозможно записать в каталог

Я загружаю файлы в свою систему, и она работает локально, где я использую Windows и XAMPP, но при хостинге, где я использую стек Ubuntu, мой файл не загружается. Я получаю сообщение об ошибке, что его нельзя записать в системный каталог, который находится в общей папке. это мой код

 $destinationPath = public_path().'/system'; // upload path
  $extension = Request::file('add_students')->getClientOriginalExtension(); // getting excel extension
  // dd($extension);
  $fileName = rand(11111,99999).'.'.$extension; // renameing excel file
  $file=Request::file('add_students')->move($destinationPath, $fileName); // uploading file to given path
  $path=$file->getRealPath();

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

chmod 770 /var/www/html/public/system

но все равно даже после этого получаю ошибку Unable to write in the "/var/www/html/public/system" directory.

Я использую laravel 5, а мой хост — цифровой океан. Спасибо


person user3714932    schedule 17.01.2016    source источник
comment
попробуй chmod 755 /var/www/html/public/system and chown www-data:www-data /var/www/html/public/system   -  person JLPuro    schedule 17.01.2016
comment
Проверьте и распечатайте путь назначения и дайте полное разрешение 777 только для проверки, а затем измените на 755.   -  person    schedule 17.01.2016
comment
Вы на сервере апача?   -  person Vishal Sharma    schedule 18.01.2016


Ответы (3)


chmod 755 /var/www/html/public/system и chown www-data:www-data /var/www/html/public/system, как утверждает @JLPuro, работают отлично. Большое спасибо, ребята.

person user3714932    schedule 18.01.2016
comment
Можно добавить флаг -R, чтобы сделать это рекурсивно. У меня не работало, пока я не добавил флаг. chown -R www-data:www-data /path/to/dir - person andromeda; 26.09.2017

разрешение для папки sudo chmod 777./(folder name)

для файла sudo chmod 777 -R ./(file name)

person Jyotirmoy Bhattacharjee    schedule 03.09.2019
comment
Это будет катастрофа, не используйте 777, пожалуйста. Это дает разрешение всем читать, писать и даже удалять. Эта команда на самом деле скармливает вам хакера. - person Saddan; 14.11.2020

Всякий раз, когда вам нужно создать каталог, используйте это:

use File;
use Illuminate\Foundation\Bus\DispatchesJobs;

использовать это в контроллере

if (!file_exists(public_path().'system')) {            
                if(File::makeDirectory(public_path().'system',0777,true)){                
                  }
                }

используйте это в своей функции

person sahil sharma    schedule 16.07.2020