На моем компьютере с 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?