Невозможно заставить Laravel 4 работать на localhost

Я впервые пробовал 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, но более безопасных :

  1. Перейдите в режим суперпользователя (sudo -s или su).
  2. Создание web группы ( groupadd web )
  3. Добавьте вас основного пользователя в группу web (предположим, что ваш пользователь cool_user , поэтому запустите usermod -a -G web cool_user )
  4. Добавьте пользователя php-fpm или веб-сервера (если php используется как модуль SAPI) в web группу (например, на CentOS php-fpm используется имя пользователя apache , поэтому в большинстве случаев это будет работать: usermod -a -G web apache )
  5. Измените владельца корневой директории проекта на рекурсивно ( chgrp -R web /path/to/project/root/ )
  6. Предоставьте рекурсивные права на запись для группы ( chmod -R g+w /path/to/project/root/
  7. Необязательно Чтобы разрешить всем, недавно созданным apache (или некоторым другим) пользовательским файлам и папкам доступ к вашему пользователю, заставить их получать групповое владение так же, как и их родительскую папку, путем рекурсивного определения бита groupid в корневом каталоге проекта ( chmod -R g+s /path/to/project/root/ ).

Voila !.

Быстро и грязно , для тех, кто не заботится о безопасности и хочет заставить его работать любой ценой, а не безопасно :

  1. Перейдите в режим суперпользователя (sudo -s или su).
  2. Предоставьте рекурсивно полное разрешение (чтение, запись, выполнение) для всех пользователей ( 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 для запуска как вы.

  1. В id терминала введите uid=123(Myname) .

  2. Откройте /etc/apache2/httpd.conf и отредактируйте его, чтобы использовать свое имя пользователя.

     <IfModule unixd_module> User Myname Group staff </IfModule> 
  3. Вернуться к выводу: sudo apachectl restart

Я столкнулся с этой проблемой несколько минут назад, и использование хранилища sudo chmod -R 777 помогло сделать запись / meta / services.json доступной для записи. Просто чтобы добавить к тому, что все говорили. Это сработало для меня.