Ответ 1
Попробуйте изменить права доступа к папке storage
с помощью терминала:
chmod -R 777 storage
Более подробную информацию по этому вопросу можно найти здесь.
Я впервые пробовал Laravel после прочтения объявления о выпуске бета-версии Laravel4.
Я выполнил эти шаги. Я установил композитор и laravel со всеми необходимыми зависимостями. Я кладу laravel внутри моей директории ~/public_html
, поскольку я привык делать это с помощью Codeigniter, но я думаю, что здесь что-то не так.
Если я укажу на браузер на http://localhost/~carlo/laravel-develop/
, он просто отобразит содержимое каталога.
Затем, хотя в файловой системе у меня была папка laravel-develop/public
, она не отображалась в браузере.
Я обнаружил, что изменение .htaccess
выглядит следующим образом:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
возникла ошибка при попытке получить доступ к общей папке. Ошибка:
ErrorException: Предупреждение: file_put_contents (/home/carlo/public_html/laravel-develop/app/config/../storage/meta/services.json): не удалось открыть поток: разрешение отклонено в /home/carlo/public _html/laravel-develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php line 77
другой:
/home/carlo/public_html/laravel-develop/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php line 77
затем длинный список ошибок. Последнее:
require_once ('/home/carlo/public_html/laravel-develop/start.php') в /home/carlo/public _html/laravel-develop/public/index.php строка 53
Попробуйте изменить права доступа к папке storage
с помощью терминала:
chmod -R 777 storage
Более подробную информацию по этому вопросу можно найти здесь.
Ваши ошибки привели к тому, что laravel не удалось записать в папку приложения/хранилища. Остальное было просто трассировкой стека. Чтобы сделать папку хранения доступной для записи, cd в папку приложения, а затем запустите:
chmod -R 777 storage
Производственный путь, умеренная сложность для людей, не знакомых с Unix, но более безопасный:
web
(groupadd web
)web
(предположим, что ваш пользователь cool_user
, поэтому запустите usermod -a -G web cool_user
)web
(например, на CentOS php-fpm используйте имя пользователя apache
, поэтому в большинстве случаев это будет работать: usermod -a -G web apache
)web
рекурсивно (chgrp -R web /path/to/project/root/
)chmod -R g+w /path/to/project/root/
apache
(или некоторые другие) были доступны для вашего пользователя, сделайте так, чтобы они получили групповое владение так же, как и их родительская папка, указав бит groupid рекурсивно в корневом каталоге проекта (chmod -R g+s /path/to/project/root/
).Voila!.
Быстрый и грязный способ, для тех, кто не заботится о безопасности и хочет заставить его работать любой ценой, не защищен:
chmod -R o=rwx /path/to/project/root/
В моем случае я решил эту ошибку, изменив в файле /app/config/app.php значение по умолчанию:
'url' => 'http://localhost',
для моего локального URL-адреса хоста виртуального хоста:
'url' => 'http://mydomain.local',
Это казалось существенным изменением, которое разрешило проблему (я также chmod'ed папку хранения, как предложено здесь)
надеюсь, что это поможет некоторым из вас.
далее, если вы используете виртуальную среду виртуального/виртуального типа VM, то на моем Mac мне нужно было выпустить chmod в системе хоста (mac), но в моем окне Windows было нормально выдавать chmod directcly на виртуальной машине.
Вам нужно добавить: Options + FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Вам необходимо прочитать установочную документацию:
http://laravel.com/docs/installation#configuration
Обратите внимание на бит здесь:
Laravel requires one set of permissions to be configured - folders within app/storage require write access by the web server.
В этом документе есть и другие материалы, поэтому обязательно прочитайте все.
У меня была такая же проблема, вот как я ее решаю: В ваших файлах httpd-vhosts.conf вам нужно добавить конфигурации в свои папки, это то, что у меня есть в моей
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/home/carlospublic_html"
ServerName carlos.local
<Directory "/home/carlos/public_html">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>>
Эй, я тоже получил эту ошибку, и изменение разрешений на запись тоже не работает. Оказалось, что мне нужно изменить параметры пользователя и группы в файле apache httpd.conf. Вот хороший учебник для него: Включить разрешения на запись для встроенного Apache в Mac OS X Lion
Веб-сайт вашего сервера должен указывать на папку /public
вашей установки Laravel. Здесь файл index.html
возвращается с того места, где инициализируется Laravel.
Во-первых, этот ответ здесь поможет вам с разрешениями. Во-вторых, вам может потребоваться добавить RewriteBase ~/carlo/public_html/laravel-develop
в ваш .htaccess, поскольку вы запускаете его из домашнего каталога.
Проверяя требование для LR4, ваш локальный сервер должен иметь следующие: PHP >= 5.3.7 Расширение MCrypt PHP
В противном случае произойдет сбой. Я столкнулся с этой проблемой и теперь ищу обновленный PHP и его расширение для моего XAMPP.
Мне нравится этот метод лучше, чем изменение разрешений на 777. Установите Apache для запуска, как вы.
В терминальном типе id
, чтобы получить uid=123(Myname)
.
Откройте/etc/apache2/httpd.conf и отредактируйте его, чтобы использовать свое имя пользователя.
<IfModule unixd_module>
User Myname
Group staff
</IfModule>
Вернуться к выводу: sudo apachectl restart
Я столкнулся с этой проблемой несколько минут назад, и использование хранилища sudo chmod -R 777, казалось, помогло сделать запись /meta/services.json доступной для записи. Просто чтобы добавить к тому, что все говорили. Это сработало для меня.