Mac OS 10.5マシンで、~/Documents
のような~/Documents/foo/html
のサブフォルダを http:// localhost/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 のようなlikeを指定してみましたが、それも機能しませんでした。次に、symlinkルートを試しました。
/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
に変更してみます。 (期待どおりに)できない場合は、上のディレクトリに1つずつアクセスしてみてください。そのサブディレクトリは、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>
ファイルボルトが有効になっていないことを確認してください。同じ問題がありました。私は見つけることができる他のすべてを試しました。何もうまくいきませんでした。しかし、これを理解しようとする1時間後、ファイルボルトを有効にしたことを思い出しました。
これを無効にすると問題が解決しました。
シンボリックリンクの所有権を確認してください。 Mac OS Xを使用しているため、symlinkの所有者を変更できます。 /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
を実行するか、オンラインで確認してください man 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 /〜someoneで正しく使用できますか?