Apache дает 403 Запрещенные ошибки
Ok, поэтому я ранее настроил два виртуальных хоста, и они работают круто. они оба дома простые веб-проекты и отлично работают с http://project1 и http://project2 в браузере.
В любом случае, я пришел добавить еще один vhost. Я отредактировал файл/etc / hosts с помощью 127.0.0.1 project3, а также обновил httpd-vhosts.conf файл путем копирования и вставки предыдущих записей для project2 и редактирования пути к файлу.
Я проверил все права доступа к файлам и папкам (на самом деле я скопировано и вставлено из project2) и просто поместите сообщение "hello world" в индекс.PHP-файл.
Я получаю 403 запрещено доступ запрещен сообщение при доступе к http://project3
почему это, я просто могу понять, какой шаг я пропустил, поскольку все, кажется, настроено правильно.
спасибо заранее.
5 ответов
проверяем, что :
- Apache может физически получить доступ к файлу (пользователь, который запускает apache, вероятно, www-data или apache, может получить доступ к файлу в файловой системе)
- Apache может перечислить содержимое папки (разрешение на чтение)
- Apache имеет директиву "Allow" для этой папки. Должен быть один для /var/ www/, вы можете проверить, например, vhost по умолчанию.
дополнительно, вы можете посмотреть на ошибку.файл журнала (обычно находится по адресу /var/log / apache2 / ошибка.log), который будет описывать, почему вы получаете ошибку 403 точно.
наконец, вы можете перезапустить apache, чтобы убедиться, что вся эта конфигурация применена.
Обычно это можно сделать с помощью /etc/init.d/apache2 restart. В некоторой системе скрипт будет называться httpd. Просто выяснить.
я просто исправила эту проблему после борьбы в течение нескольких дней. Вот что сработало для меня:
во-первых, проверьте свой Apache error_log file и посмотрите на последнее сообщение об ошибке.
-
если он говорит что-то вроде:
access to /mySite denied (filesystem path '/Users/myusername/Sites/mySite') because search permissions are missing on a component of the pathтогда есть проблема с вашими правами доступа к файлам. Вы можете исправить их, выполнив следующие команды из терминала:
$ cd /Users/myusername/Sites/mySite $ find . -type f -exec chmod 644 {} \; $ find . -type d -exec chmod 755 {} \;затем обновите URL-адрес, где должен быть ваш сайт (например,
http://localhost/mySite). Если вы все еще получаете ошибку 403, и если ваш Apacheerror_logпо-прежнему говорит то же самое, а затем постепенно двигаться вверх по дереву каталогов, регулируя разрешения для каталогов, как вы идете. Вы можете сделать это из терминала:$ cd .. $ chmod 755 mySiteпри необходимости продолжайте:
$ cd .. $ chmod Sitesи, если необходимо,
$ cd .. $ chmod myusernameНЕ идти дальше. Ты можешь по-королевски испортить свою систему. Если вы все еще получаете сообщение об ошибке
search permissions are missing on a component of the path, я не знаю, что вам делать. Тем не менее, я столкнулся с другой ошибкой (ниже), которую я исправил следующим образом: -
если
error_logговорит что-то вроде:client denied by server configuration: /Users/myusername/Sites/mySiteтогда ваша проблема не в ваших разрешениях файлов, а вместо этого с вашей конфигурацией Apache.
обратите внимание, что в своем
httpd.confфайл, вы увидите конфигурацию по умолчанию, как это (Apache 2.4+):<Directory /> AllowOverride none Require all denied </Directory>или вот так (Apache 2.2):
<Directory /> Order deny,allow Deny from all </Directory>НЕ изменить это! Мы не будем переопределять эти разрешения глобально, а вместо этого в вашем . Прежде, однако, убедитесь, что ваш хост
Includeв строкеhttpd.confis комментарии. Это должно выглядеть так. (Ваш путь может быть разным.)
открыть# Virtual hosts Include etc/extra/httpd-vhosts.confhttpd-vhosts.confфайл, который вы простоIncluded. Добавьте запись для своей веб-страницы, если у вас ее еще нет. Это должно выглядеть примерно так этот. TheDocumentRootиDirectoryпути должны быть идентичными и должны указывать на то, где вашindex.htmlили есть. Для меня это в пределахpublicподдиректории.Для Apache 2.2:
<VirtualHost *:80> # ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/Users/myusername/Sites/mySite/public" ServerName mysite # ErrorLog "logs/dummy-host2.example.com-error_log" # CustomLog "logs/dummy-host2.example.com-access_log" common <Directory "/Users/myusername/Sites/mySite/public"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost>строки говорят
AllowOverride All Require all grantedимеют решающее значение для Apache 2.4+. Без них вы не будете переопределять настройки Apache по умолчанию, указанные в
httpd.conf. Обратите внимание, что если вы используете Apache 2.2, эти строки должны скажиOrder allow,deny Allow from allэто изменение было основным источником путаницы для гуглеров этой проблемы, таких как я, потому что копирование-вставка этих строк Apache 2.2 не будет работать в Apache 2.4+, а строки Apache 2.2 по-прежнему часто встречаются в старых потоках справки.
после того как вы сохранили ваши изменения, перезапустить Apache. Команда для этого будет зависеть от вашей ОС и установки, поэтому google отдельно, если вам нужна помощь он.
надеюсь, это поможет кому-то еще!
PS: Если у вас возникли проблемы с поиском этих .conf файлы, попробуйте запустить , например:
$ find / -name httpd.conf
вы можете попробовать отключить SELinux и попробовать еще раз, используя следующую команду
setenforce 0