22

Я настроил веб-общий доступ в Системных настройках на Mac OS X 10.6 и щелкнул ссылку, которую он мне дал. К сожалению, Apache дал мне эту ошибку 403:

запрещено

У вас нет прав доступа к /~myusername/index.html на этом сервере.

Журнал доступа отображает: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Журнал ошибок отображает: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Любопытно, что доступ к http://localhost работает нормально. Просто с двумя пользовательскими папками у меня возникли проблемы, другая пользовательская папка, которая новее моего обновления системы, работает нормально.

Раньше это работало на моей машине в Leopard, поэтому я изменил все в ~/Sites на 755, что не принесло пользы. Какие-либо предложения? Я предполагаю, что я сделал что-то с моей машиной, что вызвало это, так как я не могу представить, что Apple что-то напутает.

Я настроил PEAR с этими инструкциями, но я понятия не имею, может ли это быть причиной этого.

8 ответов8

22

У Apple есть документ поддержки для этой проблемы. Исправление проблемы включает создание файла /etc/apache2/users/yourusername.conf (yourusername - это короткое имя учетной записи, например, danielbeck - обычно это имя вашей домашней папки в /Users) со следующим содержимым:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

После этого запустите sudo chown root:wheel /etc/apache2/users/yourusername.conf и перезапустите Apache.

15

Чтобы Apache мог увидеть файл, пользователь, с которым работает Apache (вероятно, www или _www), должен иметь доступ к каталогам сайтов этих пользователей. Недостаточно иметь доступ для чтения / выполнения к содержимому ~/Sites , потому что необходимо разрешить переход от / вниз к пути к ~/Sites . Поэтому убедитесь, что / , /Users , /Users/myusername и /Users/myusername/Sites имеют как минимум разрешение a+x (бит eXecute в каталогах позволяет этому классу пользователя проходить по каталогу, даже если доступ на чтение не разрешен ).

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

Если в каком-либо из этих каталогов не отображается последний набор x (один для "других"), используйте что-то вроде chmod a+x ... чтобы установить его для этого каталога.

Если ACL для любого из этих каталогов показывает, что пользователю www специально отказано в доступе, используйте соответствующие аргументы chmod для исправления ACL.

5

Для справки, я только что имел дело с этим, и ни один из ответов здесь не работал в моем конкретном случае. Я настраивал виртуальные хосты, но что еще более важно, мне нужны были мои файлы htaccess для фактической работы.

Я изменил "AllowOverride None" на "AllowOverride All" в моем файле /etc/apache2/users/USERNAME.conf, и все мои сайты начали запрещаться.

Я изменил его обратно, а затем изменил его только для одного сайта в моем файле httpd-vhosts.conf, и только этот сайт был запрещен.

Посмотрев журналы и увидев, что проблема была в переписывании URL-адресов и отсутствии FollowSymLinks, я вернулся к файлу USERNAME.conf. Я переключаю "AllowOverride None" на "AllowOverride All" и добавляю «Options +FollowSymLinks» на следующей строке.

Вещи начали работать. Я пришел с использованием xampp на Windows, и многие из этих настроек уже были установлены для всего сервера, как я.

2

Обновление для Lion в 10/2011 я должен был также добавить

UserDir включен, поэтому мой /etc/apache2/extra/httpd-userdir.conf выглядит так:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>
2

У меня была та же проблема: моя (старая) учетная запись была недоступна, но учетная запись другого пользователя, созданная после обновления до Lion, работала очень хорошо.

Убедившись, что ваш /etc/apache2/users/USERNAME.conf выглядит следующим образом:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

сделать sudo chown root:wheel /etc/apache2/users/USERNAME.conf

похоже, что этот параметр разрешения не установлен во время обновления ОС, и пользователь Apache не может прочитать файл конфигурации и выдает ошибку.

По крайней мере, это решило это для меня.

1

Продолжение разговора с комментариями к первому вопросу. Проверьте файл /etc/apache2/httpd.conf . На моей машине у меня есть это:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

Я подозреваю, что ваше закомментировано. Я смутно припоминаю, как менял это вручную при переходе с 10,5 на 10,6, и значение по умолчанию изменилось.

Это, вероятно, очевидно, но вам придется использовать sudo для редактирования файла, потому что он будет принадлежать пользователю root.

1

В моем случае это каталог XAMPP + Mac OS X 10.7 + в папке Dropbox (перекрестная ссылка на мой другой вопрос в переполнении стека)

403 Access Forbidden сообщает Apache, поэтому я следовал приведенному выше комментарию, чтобы сменить пользователя в /XAMPP/xamppfiles/etc/httpd.conf , с User nobody на User my_user_name . Перезапустите Apache и все работает нормально.

0

Вероятно, у вас не включены индексы . Если вы этого не сделаете, вам нужно будет либо создать индексный файл (index.html или index.php), либо указать файл явно, т.е. http://localhost/~me/mypage.html .

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