403 Заборонена помилка на Mac OS X Localhost


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 працює чудово. Просто з двома папками користувача, з якими я маю проблеми, інша папка користувача, яка є новішою, ніж моя оновлення системи, працює нормально.

Раніше я працював над моєю машиною в Леопарді, тож я змістив все ~/Sitesдо 755, що не принесло користі. Будь-які пропозиції? Я припускаю, що я щось зробив зі своєю машиною, що це спричинило, оскільки я не уявляю, що Apple зіпсує щось подібне.

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


Вибачте, якщо це нерозумне питання, але саме до якої URL-адреси ви збираєтесь? Я запитую, оскільки URL-адреса "/~myusername/index.html" є непарною - вона повинна бути або "~ myusername / index.html", або " localhost / ~ myusername / index.html ", або щось таке подібний. Просто починаючи з / і потім додаючи ~ myusername пахне смішно. На додаток до (або замість цього) відповіді на це, ви можете зайти в Console.app (/Applications/Utilities/Console.app) і знайти apache2 access_log та error_log. Підтягніть це вгору, можливо, очистіть дисплей, а потім повторіть спробу своєї URL-адреси, щоб побачити, що говорить вам журнал помилок.
Майкл Х.

@khedron: URL-адреса є localhost / ~ myusername / index.html , але помилка відображає /~myusername/index.html частина
waiwai933

Добре, просто перевіряю. Що пише журнал apache у консолі (console.app)?
Майкл Х.

@khedron: Я поставив запитання про доступ та помилки у запитанні. Чи є ще одна?
waiwai933

1
У мене така ж проблема, що і у вас, і я просто роблю: chmod 777 / Програми / XAMPP / htdocs / myusername, це працює для мене
Wassim Sboui

Відповіді:


22

Apple має документ підтримки для цієї проблеми . Виправлення проблеми передбачає створення файлу /etc/apache2/users/yourusername.conf( ім'я користувача є рахунок короткого ім'ям , наприклад , 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.


і занадто перезавантажте апаш, просто виконайте sudo apachectl restartу своєму терміналі.
нуль

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.


Біт виконання встановлено для всіх цих каталогів, але я не знаю, як перевірити, чи певному користувачеві заборонено доступ.
waiwai933

Саме для цього і є "e" в "ls -lde". У ньому перераховані списки ACL (якщо такі є) для кожного з файлів.
Spiff

2
Зміна дозволів на / Users / myusername на chmod 755 вирішила проблему для мене.
Марк

Чи ця команда не дає користувачеві _www дозвіл на доступ до вашої кореневої каталоги, а також до каталогу / Користувачі тощо? Це не може бути правильним, чи не так? Усі ці отвори в безпеці для спільної роботи сторінки в одній папці? Чи десь зафіксована така поведінка?
Том Ліанса

Відповідаючи на власний коментар, я знайшов цю відповідь ( serverfault.com/a/293063/14970 ), яка дає посилання на надійну документацію щодо такої поведінки: wiki.apache.org/httpd/13PermissionDenied
Том Ліанза

5

Для довідки я просто розбирався з цим, і жодна з відповідей тут не працювала в моєму конкретному випадку. Я конфігурував віртуальні хости, але що ще важливіше, мені потрібні були мої файли htaccess, щоб фактично працювати.

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

Я змінив його назад, а потім змінив лише для одного сайту в моєму файлі httpd-vhosts.conf, і лише цей сайт був заборонений.

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

Речі почали працювати. Я прийшов з використання xampp у Windows, і в ньому було багато цих налаштувань, які вже встановлені на сервері для муляжів, як я.


1
велике спасибі, витратили досить багато часу на з'ясування того, що відбувається, не доводилося повозитися з Apache / PHP деякий час
Misha Reyzlin

1
Так, Options +FollowSymLinksпрацював як шарм.
agarie

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: wheel /etc/apache2/users/USERNAME.conf

виявляється, що цей параметр дозволу не встановлений під час оновлення ОС, і користувач Apache не може прочитати конфігураційний файл і видає помилку.

Принаймні це вирішило це для мене.


1
І, можливо, бігати sudo apachectl restartпісля цього.
Ар'ян

Для мене це працює 10.7.5. Шлях до каталогу не вказував на мій локальний веб-корінь, як тільки я оновив і перезапустив apache, все працювало. Що дивно, це те, що шлях був невірним вже понад рік і працював увесь час. Сьогодні я просто зрозумів помилку.
супайб

2

оновлення для Лева 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>

1

Продовжуючи розмову від початкових коментарів до запитання - Перевірте свій /etc/apache2/httpd.confфайл. На моїй машині у мене є таке:

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

Я підозрюю, що ваш коментується. Я неясно пригадую, що змінив це вручну при переході з 10,5 на 10,6 і змінив за замовчуванням.

Це, мабуть, очевидно, але вам доведеться використовувати sudoдля редагування файлу, оскільки він буде належати root.


1
Ні, моя схожа точно на вашу.
waiwai933

1

Мій випадок - XAMPP + Mac OS X 10.7 + Каталог у папці Dropbox (перехресне посилання на моє ще одне питання у переповненні стека)

403 Заборонений доступ повідомляється Apache, тому я дотримувався вищевказаного коментаря, щоб змінити Користувача в розділі " /XAMPP/xamppfiles/etc/httpd.confЗ" User nobodyна " User my_user_name. Перезапустіть Apache & він прекрасно працює.


0

Ви, ймовірно, не ввімкнули індекси . Якщо ви цього не зробите, вам не потрібно буде або створити індексний файл ( index.htmlабо index.php), або вказати файл явно, тобто http://localhost/~me/mypage.html.


Вибачте, щоби двічі перевірити, я повинен відвідувати localhost / ~ myusername / index.html і мати файл під назвою index.html у своїй папці Сайти, правда? Якщо так, то 403 все ще відбувається.
waiwai933

Я взагалі не повинен відвідувати вас ~myusername. http://localhost/слід вказувати на /Users/youruser/Sites/.
Джош К
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.