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

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

Я впервые пробовал 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

4b9b3361

Ответ 1

Попробуйте изменить права доступа к папке storage с помощью терминала:

chmod -R 777 storage

Более подробную информацию по этому вопросу можно найти здесь.

Ответ 2

Ваши ошибки привели к тому, что laravel не удалось записать в папку приложения/хранилища. Остальное было просто трассировкой стека. Чтобы сделать папку хранения доступной для записи, cd в папку приложения, а затем запустите:

chmod -R 777 storage

Ответ 3

Производственный путь, умеренная сложность для людей, не знакомых с Unix, но более безопасный:

  • Перейдите в режим суперпользователя (sudo -s или su).
  • Создать группу web (groupadd web)
  • Добавьте основного пользователя в группу web (предположим, что ваш пользователь cool_user, поэтому запустите usermod -a -G web cool_user)
  • Добавьте пользователя php-fpm или веб-сервера (если php используется как модуль SAPI) в группу 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!.

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

  • Перейдите в режим суперпользователя (sudo -s или su).
  • Предоставьте рекурсивно полное разрешение (чтение, запись, выполнение) для всех пользователей (chmod -R o=rwx /path/to/project/root/

Ответ 4

В моем случае я решил эту ошибку, изменив в файле /app/config/app.php значение по умолчанию:

'url' => 'http://localhost',

для моего локального URL-адреса хоста виртуального хоста:

'url' => 'http://mydomain.local',

Это казалось существенным изменением, которое разрешило проблему (я также chmod'ed папку хранения, как предложено здесь)

надеюсь, что это поможет некоторым из вас.

Ответ 5

далее, если вы используете виртуальную среду виртуального/виртуального типа VM, то на моем Mac мне нужно было выпустить chmod в системе хоста (mac), но в моем окне Windows было нормально выдавать chmod directcly на виртуальной машине.

Ответ 6

Вам нужно добавить: Options + FollowSymLinks

<IfModule mod_rewrite.c> 
RewriteEngine on 
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

Ответ 7

Вам необходимо прочитать установочную документацию:

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.

В этом документе есть и другие материалы, поэтому обязательно прочитайте все.

Ответ 8

У меня была такая же проблема, вот как я ее решаю: В ваших файлах 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>>

Ответ 10

Веб-сайт вашего сервера должен указывать на папку /public вашей установки Laravel. Здесь файл index.html возвращается с того места, где инициализируется Laravel.

Ответ 11

Во-первых, этот ответ здесь поможет вам с разрешениями. Во-вторых, вам может потребоваться добавить RewriteBase ~/carlo/public_html/laravel-develop в ваш .htaccess, поскольку вы запускаете его из домашнего каталога.

Ответ 12

Проверяя требование для LR4, ваш локальный сервер должен иметь следующие: PHP >= 5.3.7 Расширение MCrypt PHP

В противном случае произойдет сбой. Я столкнулся с этой проблемой и теперь ищу обновленный PHP и его расширение для моего XAMPP.

Ответ 13

Мне нравится этот метод лучше, чем изменение разрешений на 777. Установите Apache для запуска, как вы.

  • В терминальном типе id, чтобы получить uid=123(Myname).

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

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

Ответ 14

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