web-dev-qa-db-ja.com

Apache:Mac OS 10.5のApache httpdにシンボリックリンクまたはエイリアスを設定するには、chmod 755で十分ではありませんか?

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サービスユーザーが表示できる必要があります。

15
Eugene Yokota

アクセスしたいディレクトリの上のいくつかのディレクトリには、Apacheがそれをトラバースできるようにする権限がないと思います。 Apacheが(Sudo -i -u Apacheまたは何でも)として実行されているユーザーになり、目的のディレクトリに移動してlsに変更してみます。 (期待どおりに)できない場合は、上のディレクトリに1つずつアクセスしてみてください。そのサブディレクトリは、o+xを設定する必要があるサブディレクトリです。泡立て、すすぎ、必要に応じて繰り返します。

24
womble

使用する +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>
2
Dave Cheney

ファイルボルトが有効になっていないことを確認してください。同じ問題がありました。私は見つけることができる他のすべてを試しました。何もうまくいきませんでした。しかし、これを理解しようとする1時間後、ファイルボルトを有効にしたことを思い出しました。

これを無効にすると問題が解決しました。

1
Bob

シンボリックリンクの所有権を確認してください。 Mac OS Xを使用しているため、symlinkの所有者を変更できます。 /Library/WebServer/Documentsls -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グループはリンクをたどることができます。

1
Jason S

/ Usersディレクトリ(ls -l/Users)をチェックして、ユーザー(誰か)の権限を確認します。
また、「サイト」ディレクトリはlocalhost /〜someoneで正しく使用できますか?

0
radius