Публичната папка на Laravel е достъпна на LAMP сървър

Имам остра нужда от помощ при настройването на моя проект laravel на LAMP сървър. Досега тествах моите „Красиви URL адреси“ на моя сървър xampp localhost без проблеми. Сега, когато се опитвам да го настроя на действителен LAMP сървър, срещам проблеми

Досега съм инсталирал LAMP услугите (Ubuntu, Apache2, MYSQL, PHP5 (с curl и mcrypt)). В момента имам моя проект laravel в моята домашна директория със символна връзка към публичната папка в моята папка /var/www/html така... проект, символна връзка.

Промених моя /etc/apache2/apache2.conf със следната конфигурация

<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
       AllowOverride None
       Require all granted
</Directory>

<Directory /var/www/html>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
</Directory>

След това използвах командата sudo a2enmod rewrite и редактирах моя .htaccess файл според инструкциите в документите на laravel.

Накрая рестартирах услугата си apache: sudo service apache2 restart и когато се опитам да отида на "mydomain.com/public", получавам 403 forbidden error.

Има ли някой там, който може да ми помогне?


person neh11    schedule 08.06.2015    source източник
comment
Няма да имате достъп до /public в браузъра си, а само до /.   -  person Stuart Wagner    schedule 08.06.2015
comment
Направих грешка при въвеждането на публикацията... Промених моя /etc/apache2/apache2.conf, така че да изглежда така puu.sh/igEnN/22069d76b6.png.   -  person neh11    schedule 08.06.2015
comment
@StuartWagner Моят корен на документа е /var/www/html, което не означаваше, че трябва да включа /public. Така или иначе все още не работи, когато се опитам да осъществя достъп до URL адресите си от routes.php, получавам, че ресурсът не е намерен   -  person neh11    schedule 08.06.2015
comment
Трябва да насочите вашия DocumentRoot към папката public, защото там живее index.php на Laravel.   -  person Stuart Wagner    schedule 08.06.2015
comment
@StuartWagner Промених корена на моя документ към публичната папка, красивите ми URL адреси от routes.php все още не работят   -  person neh11    schedule 08.06.2015
comment
Уверете се, че вашият .htaccess е настроен правилно. Всички заявки трябва да бъдат насочени към index.php, така че Laravel да може да ги улови.   -  person Stuart Wagner    schedule 08.06.2015
comment
Моят .htaccess файл е като фрагмент, публикуван на www.laravel.com/docs/5.0, за който се казва, че се използва, ако оригиналът не работи   -  person neh11    schedule 08.06.2015


Отговори (1)


Що се отнася до конфигурацията на Apache, изглежда е добре. Това, което предпочитам, е да деактивирам индексите (за да предотвратя списъка с директории) и MultiViews (за да предотвратя имплицитно съвпадение на модел на име на файл).

<Directory /var/www/html>

    Options +FollowSymLinks -MultiViews -Indexes
    AllowOverride All
    Require all granted

    #some general directives could be handy here also
    <FilesMatch "\.(png|jp?g|gif|ico|mp4|wmv|mov|mpeg|css|map|woff?|eot|svg|ttf|js|json|pdf|csv)">
            ExpiresActive on
            ExpiresDefault "access plus 2 weeks"
    </FilesMatch>

</Directory>

Проблемът изглежда е свързан с разрешение. По подразбиране Apache работи като www-data:www-data. Това може да се промени в envvars (промените трябва да бъдат последвани от Apache рестартиране) или по време на предоставената като опция време за компилиране. /etc/apache2/envvars

...
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
...

Въпреки това, по-хубав начин би бил

  • променете групата от /var/www/html на www-data с sudo chown :www-data /var/www/html
  • променете режима на /var/www/html на 2770 с sudo chmod 2770 /var/www/html. Тъй като Apache се нуждае от разрешение за изпълнение за достъп до директорията. Приложете тази команда към други директории рекурсивно
  • променете режима на статичните файлове на вашата публична директория на 2660 за мерки за безопасност
person sitilge    schedule 09.06.2015