Как исправить ошибку: laravel.журнал не может быть открыт?
Я довольно новичок в 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
не помогло.
15 ответов:
иногда нам нужно делать больше, потому что
chmod -R 775 storage
означает
7 - Owner can write 7 - Group can write 5 - Others cannot write!
если ваш веб-сервер не работает как Vagrant, он не сможет писать на него, поэтому у вас есть 2 варианта:
chmod -R 777 storage
или измените группу на вашего пользователя веб-сервера, предположив, что это
www-data
:chown -R vagrant:www-data storage
никогда не устанавливайте каталог с 777. вы должны изменить владельца каталога. поэтому установите текущего пользователя, с которым вы вошли в систему как владелец и пользователь веб-сервера (www-data, apache, ...) как группа. Вы можете попробовать это:
sudo chown -R $USER:www-data storage sudo chown -R $USER:www-data bootstrap/cache
затем, чтобы установить разрешение каталога попробуйте это:
chmod -R 775 storage chmod -R 775 bootstrap/cache
обновление:
пользователь и группа веб-сервера зависят от вашего веб-сервера и вашей ОС. чтобы выяснить, что ваш пользователь и группа веб-сервера используют выполнить следующую команду. для использовать nginx:
ps aux|grep nginx|grep -v grep
для использования apache:
ps aux | egrep '(apache|httpd)'
Итак, если у кого-то еще есть эта проблема, вот что вы делаете.
- выйдите из ВМ
- С помощью консоли перейдите в синхронизированную папку (vagrant)
$ sudo chmod -R 777 app/storage
несмотря на то, что я создал проект в виртуальной машине с помощью пользователя виртуальной машины, папка принадлежала пользователю на реальном компьютере; поэтому, когда я пытался сделать chmod 777, я получил chmod 775.
теперь все работает.
спасибо всем, кто помог мне разберись с этим
EDIT:
На самом деле, это не работало, он все еще дал мне "разрешение отказано" проблема.
вот что я сделал, я изменил свой Vagrantfile следующим образом:
config.vm.synced_folder "./app","/var/www/", create:true, :owner => "vagrant", :group => "www-data", :mount_options => ["dmode=775","fmode=664"]
вам нужно настроить разрешения
storage
иbootstrap/cache
.
cd
в ваш проект Laravel.sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
в зависимости от того, как настроен ваш веб-сервер, вы можете быть более конкретными с вашими разрешениями и предоставлять их только пользователю вашего веб-сервера. Google
WEB SERVER NAME Laravel file permissions
для получения дополнительной информации.на момент написания статьи, это для Laravel 5.4
выполните следующие команды, и вы можете добавить
sudo
при запуске команды зависит от вашей системы:chmod -R 775 storage/framework chmod -R 775 storage/logs chmod -R 775 bootstrap/cache
это решение специфично для laravel 5.5
вы должны изменить разрешения на несколько папок: chmod-R -777 хранение / журналы chmod-R -777 storage / framework для вышеуказанных папок 775 или 765 не работает для моего проекта
chmod -R 775 bootstrap/cache
также владелец папки проекта должен быть следующим (текущий пользователь): (пользователь веб-сервера)
Я не был слишком заинтересован в изменении моих разрешений папки на 777. Вот как я решил исправить эту проблему.
во-первых, я изменил пользователя, который запускает веб-сервер на моей локальной машине(я запускаю nginx, но принципы применяются везде):
$> sudo vim /etc/nginx/nginx.conf user <my_user> #inside nginx.conf service nginx reload
затем я создал еще один под
public/
папка, чтобы узнать, кто запускал мою версию php-fpm и где я мог бы изменить это:<?php phpinfo(); ?>
перезагрузка страницы, I узнал, что
www-data
был пользователь (в разделе среды). Я также узнал, что у меня работает php 7.1. Я приступил к изменению пользователя:$> sudo vim /etc/php/7.0/fpm/pool.d/www.conf #Look for www-data or the following variables: user, group, listen.user, listen.group.
наконец, я дал следующие разрешения для папки:
sudo chmod -R 775 ./storage/
теперь, я убедился, что я был владельцем папок с помощью простого:
ls -al
если вы установите для себя пользователей сервера и php-fpm, а папки, например, принадлежат root, вы будете продолжать сталкиваться с этой проблемой. Это может произойти, если вы сделали
sudo laravel new <project>
как root. В этом случае, убедитесь, что вы используете рекурсивныйchown
команда на вашем проекте, чтобы изменитьuser:group
настройки. В большинстве случаев по умолчанию,www-data
является основным параметром для сервера и php, в этом случае речь идет о том, чтобы убедиться, что папка не находится внеwww-data
's reach.мой проект настроен в моем домашнем каталоге. На Ubuntu 16.04 и Laravel 5.5.
эта ошибка может быть исправлена путем отключения ОС Linux.
проверьте, если он был включен
sestatus
вы попробуйте..
setenforce 0
для всех пользователей Centos 7 в контексте Laravel нет необходимости отключать Selinux, просто выполните следующие команды:
yum install policycoreutils-python -y # might not be necessary, try the below first semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" # add a new httpd read write content to sellinux for the specific folder, -m for modify semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?" # same as the above for b/cache restorecon -Rv /var/www/html/ # this command is very important to, it's like a restart to apply the new rules
наконец, убедитесь, что ваши хосты, IP-адреса и виртуальные хосты все правильно для удаленного доступа.
Selinux предназначен для ограничения доступа даже для пользователей root, поэтому можно получить доступ только к необходимым материалам, по крайней мере, в общем обзоре, это дополнительная безопасность, отключение ее не является хорошей практикой, есть много ссылок для изучения Selinux, но для этот случай даже не требуется.
для пользователей windows
1: Нажмите кнопку Пуск, введите INetMgr.exe и нажмите клавишу Ввод. При появлении запроса нажмите кнопку Продолжить, чтобы повысить разрешения.
2: в разделе подключения нажмите кнопку + рядом с именем вашего компьютера.
3: в Диспетчере IIS дважды щелкните сайт, который требуется администрировать.
4: в представлении функции дважды щелкните проверка подлинности.
5: Выберите анонимная проверка подлинности, а затем нажмите кнопку Изменить Область действий.
6: в диалоговом окне изменение учетных данных анонимной проверки подлинности выберите параметр конкретный пользователь и нажмите кнопку Установить.
7: в диалоговом окне задание учетных данных, введите имя пользователя и пароль, затем нажмите кнопку ОК.
я столкнулся с той же проблемой и выше ответы не помогли мне в моем случае для той же ошибки. Переименование
bootstrap/cache/config.php
доbootstrap/cache/config1.php
решается вопрос. Удалениеconfig.php
также будет работать.