Подтвердить что ты не робот

Services.json не удалось открыть поток: разрешение запрещено в Laravel 4

Я играл с рабочей установкой Laravel 4 и перемещал все в подпапку. Тогда я решил не делать этого, и я переместил все обратно (все через командную строку):

mv * /folder

а затем

cd folder
mv * ../

Теперь сайт выдает следующую ошибку:

file_put_contents(/var/www/quantquote/app/storage/meta/services.json): failed to open stream: Permission denied

Вот скриншот полной ошибки:

http://i.imgur.com/8deGG97.png

Я уже пробовал устанавливать разрешения на папку /storage на 777 безрезультатно.

4b9b3361

Ответ 1

Провел целый день для решения этой проблемы, и эта команда просто решила мою проблему.

Если ваши разрешения 777 для папки Laravel App, и вы все равно получите эту ошибку, это потому, что SEliux заблокировал ее. Вы можете легко разблокировать свою папку приложений, используя следующую команду:

su -c "chcon -R -h -t httpd_sys_script_rw_t /usr/share/nginx/YOUR_LARAVEL_APP/"

Что это!

BTW никогда не отключает SElinux: http://stopdisablingselinux.com/

Ответ 2

Как я сказал в своем комментарии:

find app/storage -type d -exec chmod 777 {} \;

find app/storage -type f -exec chmod 777 {} \;

Это будет chmod всех каталогов и файлов в app/storage до 777.

Ответ 3

Поскольку проблема связана с разрешениями, попробуйте повторно предоставить права на app/storage и все ее подкаталоги и файл.

Вы можете сделать это с корневого пути вашего приложения Laravel:

chmod -Rvc 777 app/storage

Если по какой-то причине это не работает, попробуйте:

find app/storage -type d -exec chmod -vc 777 {} \;
find app/storage -type f -exec chmod -vc 777 {} \;

Ответ 4

Когда chmod 777 или chmod 775 не работают, проверьте, действительно ли существуют подкаталоги:

app/storage/
├── cache
├── logs
├── meta
├── sessions
└── views

если эти папки не существуют, вы должны его создать:

cd app/storage/
mkdir meta logs cache sessions views
cd ../../
chmod -R 777 app/storage

ОБНОВЛЕНИЕ 2016

В структуре приложения Laravel 5 по умолчанию storage находится на том же уровне, что и app. Итак, предыдущая команда:

cd storage/
mkdir meta logs cache sessions views
cd ../
chmod -R 777 storage

https://laravel.com/docs/5.0/structure

Ответ 5

Если вы используете CentOS7, выполните следующие действия:

  • Изменение права на использование каталога приложений/хранилища

    chown apache:apache app/storage
    
  • Изменение прав на приложение/хранилище

    chmod -R 775 app/storage
    
  • Предотвратить блокировку каталога приложений/хранилища SELinux

    su -c "chcon -R -h -t httpd_sys_script_rw_t [fullpath]/app/storage"
    

Ответ 6

просто введите это на терминале:

php artisan cache:clear

Ответ 8

Попробуйте выполнить следующие команды:

setenforce 0
setsebool -P httpd_can_network_connect_db on