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 безрезультатно.
Ответы
Ответ 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
Ответ 7
Никогда не запускайте 777 в рекурсивном режиме. Это проблема безопасности.
На данный момент удалите файл services.json и попробуйте следующее:
Laravel 4: Не удалось открыть поток: разрешение отклонено
Ответ 8
Попробуйте выполнить следующие команды:
setenforce 0
setsebool -P httpd_can_network_connect_db on