Подтвердить что ты не робот

Laravel 4: Не удалось открыть поток: разрешение отклонено

У меня возникла проблема с настройкой Laravel 4. У меня возникла эта ошибка при открытии индексной страницы:

file_put_contents (/Users/laravel/app/storage/meta/services.json) [function.file-put-contents]:
не удалось открыть поток: Permission denied.

Что мне здесь не хватает?

4b9b3361

Ответ 1

Каталог storage должен быть доступен для записи пользователем веб-сервера.

Ответ 2

Я думаю, что 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 из-за другой структуры.

Ответ 3

Лучше не изменять разрешения, вы должны просто изменить 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

Затем он попросит пароль, чтобы он ввел его затем.

Ответ 4

Просто столкнулся с этой проблемой на centos 7. Блокировщик не был разрешениями на папку, скорее это была политика selinux, блокирующая nginx/php для доступа /var/www. Итак, если вышеуказанное не работает, попробуйте отключить selinux в качестве теста, чтобы увидеть, можете ли вы повторно запустить композитор без каких-либо проблем с разрешением.

Ответ 5

В моем случае эта ошибка была брошена:

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>

тогда проблема решена!

Ответ 6

Если вы используете Apache в Ubuntu, папки хранения и начальной загрузки/кэша должны быть доступны для записи пользователем веб-сервера.

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Это позволит разрешать записи этим папкам для пользователей веб-серверов.