Назад | Перейти на главную страницу

Apache: разве chmod 755 недостаточно для настройки символической ссылки или псевдонима на Apache httpd в Mac OS 10.5?

На моем компьютере с Mac OS 10.5 я хотел бы создать подпапку ~/Documents лайк ~/Documents/foo/html быть http: // локальный хост / foo.

Первое, что я подумал, это использовать Alias ​​следующим образом:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

Это дало мне 403 Forbidden. В error_log я получил:

[error] [client ::1] (13)Permission denied: access to /foo denied

Рассматриваемая подпапка имеет доступ chmod 755. Я пробовал указывать лайки вроде http: //localhost/foo/test.php, но это тоже не сработало. Затем я попробовал маршрут символьной ссылки.

Вошел /Library/WebServer/Documents и сделал символическую ссылку на ~/Documents/foo/html. В корне документа есть

Options Indexes FollowSymLinks MultiViews

Это все еще меня 403 Forbidden:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

Что еще мне нужно для этого?

Решение:

$ chmod 755 ~/Documents

Как правило, папка, к которой будет предоставлен общий доступ, и все ее родительские папки должны быть доступны для просмотра www пользователь службы.

Готов поспорить, что какой-то каталог выше того, к которому вы хотите получить доступ, не имеет разрешений, позволяющих Apache проходить по нему. Станьте пользователем, от имени которого работает Apache (sudo -i -u apache или что-то еще), затем попробуйте перейти в интересующий каталог и ls Это. Если вы не можете (как и ожидалось), попробуйте войти в каталоги над ним, один за другим, пока один из них не позволит вам войти. В этом подкаталоге должен быть o+x устанавливать. Вспенить, промыть, повторить при необходимости.

Использовать +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>

Проверьте право собственности на символическую ссылку. Поскольку вы используете Mac OS X, владельцев символических ссылок можно изменить. В /Library/WebServer/Documents делать ls -l

Если ваша символическая ссылка на ~/Documents/foo/html называется foo и имеет разрешения вроде

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Затем по умолчанию в OS X Apache запускается от имени пользователя _www и группы _www, поэтому в вышеупомянутом случае он не сможет пройти по символической ссылке на ~/Documents/foo/html

Бегать man 8 chown на системном терминале или посмотрите в Интернете человек чоун

Вы увидите, что используя -h опция изменит владельца самой символической ссылки, а не файла, на который она указывает (его источника). Тогда вы можете сделать что-нибудь вроде

sudo chown -h :_www foo 

Это изменит simlink на

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

и группа Apache _www сможет перейти по ссылке.

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

Отключение решило проблему.

Проверьте свой каталог / Users (ls -l / Users), чтобы увидеть права вашего пользователя (кого-то).
Также правильно ли доступен каталог «Сайты» на localhost / ~ something?