2015-05-21 6 views

ответ

-3

Короткий ответ:

sudo chmod -R 777 vendor storage
echo "umask 000" | sudo tee -a /etc/resolv.conf
Обширный ответ sudo service apache2 restart

:

При запуске Laravel 5 рамок на сервере Apache с включенным по умолчанию 'ежедневно' вариант для создания файлов журналов, иногда вы сталкиваетесь с запретом записи в лог-файлы из-за прав доступа к файлам.
Усушливо, когда у вас есть проект php, все файлы принадлежат пользователю www-data, и вашему текущему пользователю не нужно писать в лог-файлы.
Что касается Laravel, вам необходимо написать два разных процесса в ваших файлах журналов:
1) Сервер Apache (пользователь www-data), когда вы что-то делаете в своем браузере;
2) Процесс Php (ваш пользователь) при выполнении команды php artisan something в командной строке.

Конечно, вы можете выполнить sudo -u www-data php artisan your_command (например, предложенный here) каждый раз, когда вы хотите использовать ремесленник, но это немного раздражает.
Прежде всего вам необходимо предоставить разрешения для каталогов поставщиков и хранилищ для пользователя Apache. Самый простой способ (но не самый лучший), чтобы выполнить: sudo chmod -R 777 vendor storage

Теперь давайте посмотрим, что происходит, когда файл_журнала создает в обоих случаях.

Если первоначально LOGFILE storage/logs/laravel-2015-mm-dd.log был создан по ошибке, поднятого php artisan something команды (случай 2), лог-файл будет иметь

`-rw-rw-r-- your_user:your_user` 

разрешения.
Если он был создан ваш сервер Apache (случай 1), который Ussually запуска под www-data пользователя, разрешения будут выглядеть следующим образом:

-rw-r-r-- www-data:www-data 

Итак, мое предложение изменить permissins для вновь созданных файлов с помощью Apache.
Давайте добавим строку umask 000 в файл /etc/resolv.conf.

echo "umask 000" | sudo tee -a /etc/resolv.conf 

Теперь

sudo service apache2 restart 

Вот так.
Знайте, это решение применимо только к среде разработки , что связано с возможным риском обеспечения безопасности.

+1

tbh, вы никогда не должны хотеть chmod 777, когда-либо. – Gooey

+0

Любое обновление о том, как это сделать с помощью производственного сервера? – PickYourPoison

4

Разрешения для каталогов storage и vendor должны оставаться на 775, по очевидным соображениям безопасности.

Однако, как ваш компьютер, так и ваш сервер Apache должны иметь возможность писать в этих папках. Пример: когда вы запускаете команды типа php artisan, ваш компьютер должен записывать в файл журналов в storage.

Все, что вам нужно сделать, это дать право собственности папки для Apache:

sudo chown www-data:www-data /path/to/your/project/vendor 
sudo chown www-data:www-data /path/to/your/project/storage 

Затем вам нужно добавить свой компьютер (на который ссылается это username) к группе, к которой принадлежит сервер Apache. Как так:

sudo usermod -a -G www-data userName 

Чаще всего, это groupNamewww-data но вы можете заменить его с правильной группой.

+1

К несчастью, ваш подход не помог бы. По умолчанию Apache создает новые файлы с разрешениями 644 (-rw-r-r--). Это означает, что ремесленник не может записать в тот же файл, принадлежит ли он группе www-data или нет. – ademin

+1

Вы правы. Я удалю свой ответ. Однако вы должны подумать о добавлении пользователя в группу www-data и сохранить 775, а не 777 всю папку. Нам нужно решение, которое тоже работает для производства. –

2
  • chmod 777 - это, в общем, риск для безопасности чрезвычайно рискованный.
  • chmod 775 для хранения папки в порядке, учитывая пользователя также
    принадлежит к группе веб-серверов.

  • с -R очень рискованно, поскольку для файлов разрешения на выполнение вообще не требуются.

  • chmod 664 для файлов внутри хранения. chmod 775 для папок внутри

Смежные вопросы