Исправление 403 Запрещено в каталоге псевдонимов с Apache - PullRequest
30 голосов
/ 24 июля 2011

Я пытаюсь настроить псевдоним, чтобы указать на какой-то каталог в моей файловой системе, не в DocumentRoot. Теперь я получаю 403 Запрещенный ответ. Вот шаги, предпринятые: 1. отредактируйте http.conf, добавив:

Alias /example "/Users/user/Documents/example"

тогда ...

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all</Directory>

2. установка разрешений с помощью chmod в терминале:

chmod 755 /Users/user/Documents/example

Теперь это должно работать? вместо этого я получаю доступ запрещен. Это вывод из error_log:

[Sun Jul 24 06:57:57 2011] [error] [client xx.xx.xx.xx] (13)Permission denied: access to /example denied

Ответы [ 11 ]

26 голосов
/ 13 ноября 2012

У меня тоже была эта проблема на OS X. Оказалось, gliptak был прав, но я должен добавить еще несколько деталей.

Мы оба пытаемся настроить виртуальный каталог для папки в домашней папке пользователя; Я думаю, именно поэтому у нас проблема. В моем случае у меня была следующая настройка:

  • Домашняя папка /Users/calrion.
  • Папка виртуального каталога: /Users/calrion/Path/to/www.
  • Есть символическая ссылка /Users/calrion/Path, указывающая на /Volumes/Other/Users/calrion/Path.

Проблема заключалась в том, что у пользователя и группы _www (которая работает в Apache, как в OS X) отсутствовал доступ к /Users/calrion и /Volumes/Other/Users/calrion.

Выполнение chmod o+x /Users/calrion и chmod o+x /Volumes/Other/Users/calrion решило проблему (в OS X 10.7.4).

Правило здесь состоит в том, что Apache требует для выполнения файлов доступ к всем папкам в пути . Без этого вы получите HTTP 403 (запрещено).

13 голосов
/ 11 января 2013

Последняя капля;) Требуется локально в записи каталога ...

как

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Require local
   Order allow,deny
   Allow from all
</Directory>

, если все остальное не работает (исправьте псевдоним, запись каталога в httpd.confи исправьте mod / usr / grp).

имейте в виду: если вы поместите свой сайт в пространство пользователя, то пользователю apache (работающему с httpd) потребуется доступ к вашему дому!

10 голосов
/ 03 июля 2014

Это все очень хорошие ответы. Никто из них не работал для меня.

У меня есть псевдоним, указанный на сервере OSX, указывающий на каталог пользователя. Я потратил много времени на chmodding и связывался с пользователем _www, рекурсивно добавляя права на исполняемые файлы, удаляя macports и всякие другие вещи, пытаясь заставить это работать. Я пробовал 777. Нет. Понятия не имею, почему это не сработало.

В конце концов, Я только что установил флажок «Общая папка» в Finder для этой папки, и он работал, на указанном домене, с активным php, так, как я этого хотел. : / ... чтобы было легко.

10 голосов
/ 24 июля 2011

Проверьте разрешение на /Users/user/Documents/, /Users/user/ (разрешения более высокого уровня применяются в первую очередь ...)

/bin/su для пользователя, использующего Apache (например, www, www-data) и cat файл в каталоге /Users/user/Documents/example. Это может указывать на проблемы с разрешениями при настройке.

6 голосов
/ 27 сентября 2011

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

Вы можете просмотреть контекст безопасности с помощью ls -Z.Если ваши файлы / папки не имеют httpd_sys_content_t, тогда apache не будет их сервировать!Вы можете добавить правильный контекст с чем-то вроде chcon -R --type=httpd_sys_content_t /new_html_directory.Это изменит контекст файлов, находящихся в данный момент в каталоге, но не любых файлов, которые будут добавлены впоследствии (для этого вам нужно будет работать с semanage).Другой вариант - просто оставить файлы в /var/www.

.
4 голосов
/ 29 декабря 2014

Вот что исправило это для меня:

в /etc/apache2/httpd.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None

    # REMOVE THESE LINES
    #Order deny,allow
    #Deny from all

    # ADD THIS LINE
    Require all denied
</Directory>

Это изменение реализует изменения, внесенные в обновление apache с 2.2 до 2.4 .Обновление OSX Yosemite принесло с собой обновление apache (PSA: если вы планируете обновление до Yosemite, выделите себе неделю на то, чтобы исправить все, что оно сломалось).

Странно то, что я уже получил apache 2.4работает, и вдруг он снова ломается ....

PSA: если вы планируете перейти на Yosemite, выделите себе неделю на то, чтобы починить все, что сломалось

3 голосов
/ 21 августа 2013

После большого количества потраченного времени я решил проблему и хотел поделиться, чтобы сэкономить ваше время.

Все приведенные выше и другие посты имеют правильные части в своих ответах, но ниже указана сумма

В вашем файле "/etc/apache2/httpd.conf":

1 - изменить корень документа

Original: DocumentRoot "/Library/WebServer/Documents"
Change to: DocumentRoot "/Users/yourname/www"

2- изменить

Оригинал:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

Изменить на:

<Directory /Users/yourname/www>
    Options FollowSymLinks Includes ExecCGI
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

3- Изменение:

Оригинал:

<Directory "/Library/WebServer/Documents">

Изменить на:

<Directory "/Users/yourname/www">

4- И, наконец, вам может не понадобиться этот шаг, если вы пользователь ужинания, это установка правильного разрешения для вашей новой корневой папки

chmod 755 /Users/yourname/www

Надеюсь, это поможет

0 голосов
/ 04 августа 2017

Быстрое решение:

Используйте эти команды как root в Linux:

find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
0 голосов
/ 15 марта 2016

Мне пришлось вернуть свой конфигурационный файл apache, а затем снова настроить сервер.нашел это полезным: https://apple.stackexchange.com/questions/41143/how-to-revert-default-mac-apache-install-to-original

0 голосов
/ 24 января 2012

SELinux был виновником для меня.Если у вас возникла эта проблема в Linux, и ваши псевдоним и права доступа к файлам верны, попробуйте выполнить команду «setenforce 0», чтобы перевести SELinux в разрешающий режим.Это помогло мне.

...