2

Когда я получаю доступ к http://localhost/, я получаю 403 Forbidden, но если я получаю доступ к http://localhost/~ username, он обслуживает страницы. Вещи, которые я пробовал:

  • Проверка журналов ошибок
  • Обмен с оригинальными файлами httpd conf
  • Изменение DocumentRoot на мой каталог пользователя (после всего, что должно работать, если я могу получить доступ к ~username)

Я видел более 30 сайтов с вопросами и ответами, которые указывают на то, что людям, имеющим проблемы с пользовательскими каталогами, запрещено. У меня противоположная проблема, и поэтому я рву свои волосы здесь.

1 ответ1

3

Я на самом деле столкнулся с этой же проблемой (по крайней мере, те же симптомы) только сегодня. В моем случае я посмотрел на /var/log/apache2/error_log и увидел несколько таких ошибок:

[Mon Mar 19 15:30:30 2012] [error] [client ::1] Directory index forbidden by Options directive: /var/empty/

Затем я посмотрел в /etc/apache2/httpd.conf и увидел эти две строки ...

<IfDefine MACOSXSERVER>
DocumentRoot /var/empty

... а потом, эти строки ...

<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
# Some comments were here
DocumentRoot "/Library/WebServer/Documents"

… Так что я решил, что каким-то образом MACOSXSERVER будет определен, когда этого не должно быть, так как этот компьютер не является сервером. Затем я вспомнил, что мне нужно было установить инструменты Lion Server Admin на этом компьютере, и в документации Apple мне было сказано установить пакет Lion Server из Mac App Store на моем компьютере администратора, хотя это было не так. предназначен для серверной машины. Так что, возможно, это фактически / случайно преобразовало мою машину администратора в машину Mac OS X Server. Чтобы перепроверить, я побежал:

$ sw_vers
ProductName:    Mac OS X Server
ProductVersion: 10.7.3
BuildVersion:   11D50

Конечно же, теперь мой компьютер сообщал о себе как о Mac OS X Server, хотя все, что я хотел сделать, - это установить средства администрирования сервера на этом компьютере.

Возвращаясь к проблеме Apache, я в конце концов нашел /etc/apache2/ReadMe.txt , в котором рассказывалось о тех специфичных для Mac OS X определениях Apache (не забудьте прочитать его самостоятельно для получения дополнительной информации!), А затем он сказал следующее:

Эти настройки IfDefine - MACOSXSERVER, WEBSHARING_ON, WEBSERVICE_ON - устанавливаются или не устанавливаются с помощью launchd plist Apache, который присутствует в /System/Library/LaunchDaemons/org.apache.httpd.plist.

Так что в моем случае, я решил исправить это путем редактирования в этом launchd программ для Apache plist не определен MACOSXSERVER так как я не считаю свою машину сервер, и я хочу , чтобы контролировать этот материал с Web Sharing флажок в Sharing Панель системных настроек, а не из Server.app.

Итак, я отредактировал этот файл:

/System/Library/LaunchDaemons/org.apache.httpd.plist

Чтобы удалить или закомментировать эти строки, в массиве ProgramArguments :

<string>-D</string>
<string>MACOSXSERVER</string>

Я решил закомментировать их, поставив маркеры начала / конца комментариев SGML до и после них, вот так:

<!--
<string>-D</string>
<string>MACOSXSERVER</string>
-->

После сохранения моих изменений в этом файле plist , я изящно перезапустил Apache:

sudo apachectl graceful

... и все было лучше!

Возможно, мне пришлось перезагрузить страницу в моем браузере раз или два, если мой браузер кэшировал результат "403 Запрещено" для страницы, на которую я пытался попасть.

Даже если это не та же самая причина вашей проблемы, я надеюсь, что моя история поможет вам разобраться в вашей ситуации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .