Я не слишком заинтересован в изменении разрешений для моей папки на 777. Вот как я решил эту проблему.
Сначала я изменил пользователя, который запускает веб-сервер на моей локальной машине (я запускаю nginx, но принципы применяются везде):
$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload
После этого я создал еще один index.php
файл в public/
папке, чтобы узнать, кто запускает мою версию 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
досягаемости.
Мой проект настроен в моем домашнем каталоге. На Ubuntu 16.04 и Laravel 5.5.