Подтвердить что ты не робот

Фиксирование 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
4b9b3361

Ответ 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 в разрешающий режим. Это сделало трюк для меня.

Ответ 11

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

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

find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;