Ответ 1
Каталог storage
должен быть доступен для записи пользователем веб-сервера.
У меня возникла проблема с настройкой Laravel 4. У меня возникла эта ошибка при открытии индексной страницы:
file_put_contents (/Users/laravel/app/storage/meta/services.json) [function.file-put-contents]:
не удалось открыть поток: Permission denied.
Что мне здесь не хватает?
Каталог storage
должен быть доступен для записи пользователем веб-сервера.
Я думаю, что chmod -777 - плохая практика.
Чтобы решить проблему с разрешениями на Laravel, я сделал это (с пользователем root):
cd app/
chown -R www-data:www-data storage
cd storage/
find . -type d -exec chmod 775 {} \; && find . -type f -exec chmod 664 {} \;
И всегда в каталоге app/storage:
chown your_user:user_group .gitignore cache/.gitignore logs/.gitignore meta/.gitignore sessions/.gitignore views/.gitignore
Теперь выйдите из корневого пользователя, и это нормально.
EDIT: это было для Laravel4. Это не работает для Laravel5 из-за другой структуры.
Лучше не изменять разрешения, вы должны просто изменить owner:group
папки хранения на owner:group
apache с помощью chown
, это сложнее, но более безопасно, и вы 'скоро привыкну к этому, вы можете найти это в httpd.conf
MAMP:
/Applications/MAMP/conf/apache/httpd.conf
XAMMP:
/Applications/XAMPP/xamppfiles/etc/httpd.conf
Откройте httpd.conf с вашим предпочтительным редактором, затем найдите User/Group
. После поиска вы увидите эти строки ниже этой выделенной строки, которую вы искали:
User someuser
Group somegroup
Как только вы уже знаете пользователя и группу, cd в свой каталог laravel, выполните chown
:
chown -R someuser:somegroup app/storage
P.S:
Если вы получите разрешение на ошибку при выполнении chown
, попробуйте следующее:
sudo chown -R someuser:somegroup app/storage
Затем он попросит пароль, чтобы он ввел его затем.
Просто столкнулся с этой проблемой на centos 7. Блокировщик не был разрешениями на папку, скорее это была политика selinux, блокирующая nginx/php для доступа /var/www. Итак, если вышеуказанное не работает, попробуйте отключить selinux в качестве теста, чтобы увидеть, можете ли вы повторно запустить композитор без каких-либо проблем с разрешением.
В моем случае эта ошибка была брошена:
fopen (php://stdout): не удалось открыть поток: операция завершилась неудачно
Я использую виртуальный хост в Wamp.
поэтому я добавил эту строку в мой блок <VirtualHost>
→ <Directory>
в файле httpd-vhosts.conf
:
Require all granted
и мой блок:
<VirtualHost *:80>
ServerName laravel
DocumentRoot d:/wamp/www
<Directory "d:/wamp/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
тогда проблема решена!
Если вы используете Apache в Ubuntu, папки хранения и начальной загрузки/кэша должны быть доступны для записи пользователем веб-сервера.
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
Это позволит разрешать записи этим папкам для пользователей веб-серверов.