Запрещено У вас нет прав доступа на этом сервере. Centos 6/Laravel 4

У меня возникла проблема после того, как я закончил настройку LAMP и установил мое приложение laravel 4. Кажется, все пошло хорошо, когда я перехожу на свой адрес ip-адреса, он показывает мне первую страницу моего приложения правильно, но вся остальная часть страницы выдает мне ошибку 404. Запрошенный URL-адрес не найден на этом сервере.

Итак, я добавил в свой httpd.conf(под виртуальным хостом моего проекта) - AllowOverride All Разрешить заказ, отрицать

<VirtualHost *:80>
        ServerName VPS-IP-ADDRESS
        DocumentRoot /var/www/html/nextmatch/public_html/public/

       <Directory /var/www/html/nextmatch/public_html/public/>
         AllowOverride all
         Order allow,deny
          <IfModule mod_rewrite.c>
          Options -MultiViews
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
         RewriteRule ^ index.php [L]
       </IfModule>
</Directory>
</VirtualHost>

И теперь, когда я пытаюсь перейти вместо 404 ошибки, я получил Запрет У вас нет разрешения на доступ к этому серверу. Я установил с chmod 775 -R path/laravel/ и хранилище папок с 777, но все же я получил ту же ошибку, что и любые предложения, пожалуйста? Я не могу понять эту проблему, я схожу с ума! Спасибо за любую помощь.

Ответ 1

Веб-сервер запускается как демон (служба) под определенным пользователем. Этот пользователь определен в httpd.conf. По умолчанию этот пользователь будет apache. Не путайте пользователя apache с процессом httpd. Последний - демон webserver, а первый - пользователь, под которым он будет запускаться. Если созданная вами папка принадлежит root или пользователю, отличному от того, который указан в httpd.conf, тогда apache не сможет получить к нему доступ. Способ идентификации этой проблемы - перейти в папку и сделать ls -l. Если пользователь определяет в httpd.conf apache, то для доступа к папке вы должны увидеть:

drwxr-xr-x.  2 apache apache    4096 Jan  8  2013 public_folder

Заметьте, что он говорит "apache apache", то есть он принадлежит пользователю и группе apache. Если вы создали его через root, вы, вероятно, увидите:

drwxr-xr-x.  2 root root    4096 Jan  8  2013 public_folder

Пользователь apache не может получить доступ к папке, заданной пользователем root. Для решения этой проблемы выполните команду:

chown -R apache:apache myfolder

Параметр -R рекурсивный, поэтому он будет обновлять право собственности для ВСЕХ папок и файлов в этой папке для пользователя apache.

Если ваше право собственности в случае штрафа, попробуйте "временно" отключить selinux. На centos вы:

setenforce 0

Отключение selinux до следующего перезапуска. В идеале вам нужно оставить selinux для дополнительной безопасности и установить допустимый контекст для ваших файлов и папок apache.

Если выключение selinux действительно работает, значит, у вас, вероятно, есть неправильный контекст безопасности для ваших файлов и папок. выполните следующую команду для восстановления ваших контекстов безопасности:

restorecon -R -v /var/www/

Ответ 2

Если вы используете CentOS, это может быть проблемой с selinux. Проверьте, разрешено ли selinux с помощью 'sestatus'. Если он включен, вы можете проверить, не является ли это проблемой (временно), используя "sudo setenforce 0". Если apache может обслуживать сайт, вам просто нужно рекурсивно изменить контекст файлов, используя 'sudo chcon -R -t httpd_sys_content_t' (вы можете проверить существующий контекст, используя 'ls -Z'.

Selinux может и не быть проблемой, но стоит проверить.

Ответ 3

попробуйте сделать это внутри папки:

chcon -R -t httpd_sys_content_t *

Ответ 4

chcon -R -t httpd_sys_content_t *

сделал трюк для меня.

Ответ 5

из php5.conf в /etc/apache 2/mods-available

# Running PHP скриптs in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_value engine Off
#    </Directory>
#</IfModule>