На самом деле я довольно новичок в laravel и пытаюсь создать свой самый первый проект. по какой-то причине я продолжаю получать эту ошибку (я еще даже не начал кодировать)
Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423
Я читал, что это как-то связано с разрешениями, но chmod -R 775 storage
не помогло вообще.
Ответы:
Никогда не устанавливайте каталог на 777 . Вы должны изменить владельца каталога. поэтому установите текущего пользователя, с которым вы вошли как владелец, а пользователя веб-сервера (www-data, apache, ...) как группу. Вы можете попробовать это:
Затем, чтобы установить права доступа к каталогу, попробуйте это:
Обновить:
Пользователь и группа веб-сервера зависят от вашего веб-сервера и вашей ОС. Чтобы выяснить, кто ваш пользователь и группа на веб-сервере, используйте следующие команды. для использования nginx:
ps aux|grep nginx|grep -v grep
для использования Apache:
ps aux | egrep '(apache|httpd)'
источник
sudo chown -R {your current user}:www-data storage bootstrap/cache
chown: www-data: illegal group name
. Установка каталога на 777 - единственное, что работает_www
попробуйте этоsudo chgrp -R _www bootstrap/cache
. было бы полезно взглянуть на этот пост: stackoverflow.com/a/6419695/2125114Никогда не используйте 777 для каталогов на вашем реальном сервере, но на вашем собственном компьютере, иногда нам нужно сделать больше, чем 775, потому что
Средства
Если ваш веб-сервер не работает как Vagrant, он не сможет писать на него, поэтому у вас есть 2 варианта:
или измените группу на пользователя вашего веб-сервера, предположив, что это
www-data
:источник
chown -R apache:apache laravelproject
chown -R vagrant:www-data storage
сделал это для меня, спасибо.www-data: illegal group name
Чтобы устранить эту проблему, необходимо изменить владельца каталога на пользователя unix, который использует веб-сервер.
Несмотря на то, что я создал проект в виртуальной машине, используя пользователя виртуальной машины, папка принадлежала пользователю на реальном компьютере; поэтому при попытке
Теперь это работает.
Спасибо всем, кто помог мне разобраться в этом
РЕДАКТИРОВАТЬ:
Фактически, это все еще не работало, это все еще дало мне проблему «отказано в разрешении».
Вот что я сделал, я изменил свой Vagrantfile следующим образом:
источник
Это также может быть SELinux. (Centos, RedHat)
Определить статус SElinux на терминале:
Если статус включен, напишите команду для отключения SElinux
Или вы можете выполнить эту команду
$ sudo setenforce 0
источник
Вам необходимо настроить разрешения
storage
иbootstrap/cache
.cd
в ваш проект Laravel.sudo chmod -R 755 storage
sudo chmod -R 755 bootstrap/cache
Вы можете попробовать 777, если 755 не работает. 777 не безопасен, хотя!
В зависимости от того, как настроен ваш веб-сервер, вы можете быть более точными в своих разрешениях и предоставлять их только пользователю вашего веб-сервера. Google
WEB SERVER NAME Laravel file permissions
для получения дополнительной информации.На момент написания статьи это для Laravel 5.4
источник
добавить в
composer.json
После
composer install
источник
Запустите следующие команды, и вы можете добавить
sudo
в начале команды зависит от вашей системы:источник
Для всех пользователей Centos 7 в контексте Laravel нет необходимости отключать Selinux, просто выполните следующие команды:
Наконец, убедитесь, что ваши хосты, ips и виртуальные хосты правильно настроены для удаленного доступа.
Selinux предназначен для ограничения доступа даже для пользователей с правами root, поэтому можно получить доступ только к необходимым материалам, по крайней мере, из общего обзора, это дополнительная безопасность, отключение которой не является хорошей практикой, есть много ссылок, чтобы изучить Selinux, но для этого дело даже не требуется.
источник
Если вы используете CMD
Если вы используете GUI
Сначала перейдите в проект и щелкните правой кнопкой мыши на хранилище и проверьте свойства и перейдите на вкладку Разрешения
Измените разрешения, используя приведенный ниже код
Тогда ваши свойства файла могут быть
Затем проверьте ваши настройки и выполните команду laravel, она будет работать :)
источник
В Laravel вы должны включить ACL
storage
иcache
каталог, чтобы пользователь веб-сервера мог читать / писать в каталоге. Откройте новый терминал и выполните следующее:Ссылки:
https://symfony.com/doc/3.4/setup/file_permissions.html#using-acl-on-a-system-that-supports-setfacl-linux-bsd
https://linux.die.net/man/1/setfacl
источник
Это может быть поздно, но может кому-то помочь, смена разрешений для каталогов сработала для меня.
Предполагая, что ваш проект Laravel находится в
/var/www/html/
каталоге. Перейти в этот каталог.Затем измените разрешения
storage/
иbootstrap/cache/
каталоги.источник
Это решение специально для Laravel 5.5
Вы должны изменить разрешения для нескольких папок: chmod -R -777 хранилище / журналы chmod -R -777 хранилище / framework для указанных выше папок 775 или 765 не работали для моего проекта
Также владение папкой проекта должно быть следующим (текущий пользователь) :( пользователь веб-сервера)
источник
Вы могли бы сделать:
источник
Я не слишком заинтересован в изменении разрешений для моей папки на 777. Вот как я решил эту проблему.
Сначала я изменил пользователя, который запускает веб-сервер на моей локальной машине (я запускаю nginx, но принципы применяются везде):
После этого я создал еще один
index.php
файл вpublic/
папке, чтобы узнать, кто запускает мою версию php-fpm и где я могу ее изменить:Перезагрузив страницу, я обнаружил, что это
www-data
был пользователь (в разделе среды). Я также узнал, что я использую php 7.1. Я приступил к смене пользователя:Наконец, я дал следующие разрешения для папок:
Теперь я удостоверился, что являюсь владельцем папок, используя простое:
Если вы установите для себя пользователей сервера и php-fpm, а папки, к примеру, принадлежат пользователю root, то эта проблема будет продолжаться. Это может произойти, если вы сделали
sudo laravel new <project>
как root. В этом случае убедитесь, что вы используете рекурсивнуюchown
команду в своем проекте для измененияuser:group
настроек. В большинстве случаев по умолчаниюwww-data
это основной параметр для сервера и php, в этом случае необходимо убедиться, что папка находится внеwww-data
досягаемости.Мой проект настроен в моем домашнем каталоге. На Ubuntu 16.04 и Laravel 5.5.
источник
попробуй это
источник
setenforce
но в любом случае неправильно полностью отключать SELinux только для того, чтобы исправить одну проблему с разрешениями.В моем конкретном случае у меня был сгенерирован конфигурационный файл, который кэшировался в
bootstrap/cache/
каталог, поэтому мои шаги, где:rm bootstrap/cache/*.php
Создайте новый
laravel.log
файл и примените обновление разрешений для файла, используя:chmod -R 775 storage
источник
(в Ubuntu ): может быть решено в 2 простых шага:
И
источник
Удалите
"/var/www/laravel/app/storage/logs/laravel.log"
и попробуйте снова:rm storage/logs/laravel.log
источник
Имел эту проблему и нашел это, и это решило проблему.
источник
Эту ошибку можно исправить, отключив Linux.
Проверьте, включен ли он
sestatus
Вы пытаетесь..
Сетенфорс 0
источник
Для этой ошибки:
Ошибка в обработчике исключений: не удалось открыть поток или файл "/var/www/laravel/app/storage/logs/laravel.log": не удалось открыть поток: отказано в разрешении в / var / www / laravel / bootstrap / compiled .php: 8423
используйте эту команду в терминале:
источник
Исправлена проблема с этой командой на сервере Centos 7.6
источник