На самом деле я довольно новичок в 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
вообще не помогло.
Итак, если у кого-то еще есть эта проблема, вот что вы делаете.
$ sudo chmod -R 777 app/storage
Несмотря на то, что я создал проект внутри виртуальной машины с использованием пользователя виртуальной машины, папка принадлежала пользователю на реальном компьютере; поэтому, когда вы пытаетесь сделать chmod 777, я получил chmod 775.
Теперь он работает.
Спасибо всем, кто помог мне разобраться в этом
РЕДАКТИРОВАТЬ:
На самом деле, он не работал, он все еще дал мне проблему с разрешением отказа.
Вот что я сделал, я изменил свой Vagrantfile следующим образом:
config.vm.synced_folder "./app","/var/www/", create:true, :owner => "vagrant", :group => "www-data", :mount_options => ["dmode=775","fmode=664"]
Иногда нам нужно делать больше, потому что
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
Вам необходимо настроить разрешения на storage
и bootstrap/cache
.
cd
в ваш проект Laravel. sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache
В зависимости от того, как настроен ваш веб-сервер, вы можете быть более конкретным с вашими разрешениями и предоставлять их только своему пользователю веб-сервера. Имена пользователей WEB SERVER NAME Laravel file permissions
для получения дополнительной информации.
На момент написания, это для Laravel 5.4
Никогда не устанавливайте каталог на 777. вы должны изменить право собственности на каталог. поэтому установите для текущего пользователя, что вы вошли в систему с правами владельца и пользователя веб-сервера (www-data, apache, …) в качестве группы. Вы можете попробовать следующее:
sudo chown -R {your current user}:www-data storage sudo chown -R {your current user}:www-data bootstrap/cache
то для установки разрешения каталога попробуйте следующее:
chmod -R 775 storage chmod -R 775 bootstrap/cache
Это решение специфично для laravel 5.5
Вы должны изменить разрешения на несколько папок: chmod -R -777 storage / logs chmod -R -777 storage / framework для вышеуказанных папок 775 или 765 не работал для моего проекта
chomd -R 775 bootstrap / cache
Также владение папкой проекта должно быть (текущий пользователь) 🙁 пользователь веб-сервера)
Я не был слишком заинтересован в изменении прав доступа к папкам на 777. Вот как я решил исправить эту проблему.
Во-первых, я сменил пользователя, который запускает веб-сервер на моей локальной машине (я запускаю nginx, но принципы применяются повсюду):
$> sudo vim /etc/nginx/nginx.conf user <my_user> #inside nginx.conf service nginx reload
Впоследствии я создал еще один файл index.php
в папке public/
folder, чтобы узнать, кто запускал мою версию php-fpm, и где я хотел бы изменить это:
<?php phpinfo(); ?>
Перезагружая страницу, я узнал, что 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
к www-data
.
Мой проект настроен в моем домашнем каталоге. На Ubuntu 16.04 и Laravel 5.5.