Я впервые пробовал Laravel после прочтения объявления о выпуске бета-версии Laravel4.
Я выполнил следующие шаги: я установил композитор и laravel со всеми зависимостями, в которых он нуждался. Я помещаю laravel внутри моего каталога ~/public_html
– поскольку я привык делать это с помощью Codeigniter, но я думаю, что здесь что-то не так.
Если я http://localhost/~carlo/laravel-develop/
на браузер на 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- разработка / vendor / laravel / framework / src / Illuminate / Filesystem / Filesystem.php 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
) 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 прямо на VM ,
Вам нужно добавить: 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 your@mail.com 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>>
Эй, я тоже получил эту ошибку, и изменение разрешений на запись тоже не работает. Оказалось, что мне нужно изменить параметры пользователя и группы в файле httpd.conf apache. Вот хороший учебник для этого: Включите разрешения на запись для встроенного встроенного 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 доступной для записи. Просто чтобы добавить к тому, что все говорили. Это сработало для меня.