Фиксирование 403 Запрещено в каталоге псевдонимов с Apache
Я пытаюсь настроить псевдоним, чтобы указать на какой-то каталог в моей файловой системе, а не на 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
Ответы
Ответ 1
У меня тоже была проблема с 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 (запрещено).
Ответ 2
Последняя солома;) Требуется локальная запись в каталоге...
как
<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) нужен доступ к вашему дому!
Ответ 3
Проверить разрешение на /Users/user/Documents/
, /Users/user/
(сначала выполняются права более высокого уровня...)
/bin/su
для пользователя, запускающего Apache (например, www, www-data) и cat
файла в каталоге /Users/user/Documents/example
. Это может указывать на проблемы с разрешением вашей установки.
Ответ 4
Все это очень хорошие ответы.
Никто из них не работал у меня.
У меня есть псевдоним, указанный на сервере OSX, указывающий на каталог пользователя. Я долго ждал chmodding и возился с пользователем, добавляя исполняемые разрешения рекурсивно, удаляя macports и всевозможные вещи, пытаясь заставить это работать. Я пробовал 777. Нет. Не знаю, почему он не работал.
В конце концов, я только установил флажок "общая папка" в Finder для этой папки, и он работал в указанном домене с активным php, как я этого хотел.:/... так было легко.
Ответ 5
У меня была такая же проблема. Я обнаружил, что SE_Linux включен, и контекст безопасности файлов в моей папке с псевдонимом был неправильным, отсутствует httpd_sys_content_t.
Вы можете просмотреть контекст безопасности с помощью ls -Z
. Если ваши файлы/папки не имеют httpd_sys_content_t, то apache не будет их перезагружать! Вы можете добавить соответствующий контекст с чем-то вроде chcon -R --type=httpd_sys_content_t /new_html_directory
. Это изменит контекст файлов, находящихся в данный момент в каталоге, но не будет добавлено никаких файлов (для этого вам нужно будет работать со семанажем). Другой вариант - просто оставить файлы в каталоге/var/www.
Ответ 6
После многого времени я исправил проблему, и я хотел поделиться, чтобы сэкономить ваше время.
Все гентльмены выше и на других постах имеют правильные части в своих ответах, но ниже - сумма
В файле "/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
Надеюсь, это поможет
Ответ 7
Вот что исправил это для меня:
in /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 update от 2.2 до 2.4. Обновление OSX Yosemite принесло обновление Apache (PSA: если вы планируете обновить до Yosemite, выделите себе неделю, чтобы исправить все, что он сломает).
Странно то, что я уже получил apache 2.4, и вдруг он снова ломается....
PSA: если вы планируете перейти на Yosemite, выделите себе неделю, чтобы исправить все, что он сломал
Ответ 8
Это, безусловно, выглядит правильно, сделайте проверку здравомыслия.
-
вы перезапустили apache
-
проверить группу и права пользователя
-
Я думаю, что кавычки могут быть удалены
-
есть что-то в /Users/user/Documents/example?
-
попробуйте 777
-sean
Ответ 9
SELinux был для меня виновником. Если у вас возникла эта проблема в окне linux, а ваши права на псевдоним и файлы правильны, попробуйте сделать "setenforce 0", чтобы поставить SELinux в разрешающий режим. Это сделало трюк для меня.
Ответ 10
Мне пришлось вернуть файл конфигурации apache, а затем снова настроить сервер. нашел это полезным:
https://apple.stackexchange.com/questions/41143/how-to-revert-default-mac-apache-install-to-original
Ответ 11
Быстрое решение:
Используйте эти команды как root для Linux:
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;