Mac OS X 10.6のシステム環境設定でWeb共有を設定し、そこにあるリンクをクリックしました。残念ながら、Apacheは次の403エラーを出しました。
禁止
このサーバーの/~myusername/index.htmlにアクセスする権限がありません。
アクセスログが表示されます:10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210
エラーログが表示されます:[Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/
不思議なことに、 http:// localhost へのアクセスはうまくいきます。私が問題を抱えている2つのユーザーフォルダーが原因で、システムアップグレードよりも新しい他のユーザーフォルダーが正常に機能しています。
Leopardで自分のマシンでこれを動作させたことがあるので、~/Sites
を755に変更しましたが、効果はありませんでした。助言がありますか?私はAppleこのような何かを台無しにすることを想像することができないので、私はこれを引き起こした私のマシンに何かをしたと思います。
私はPEAR with これらの指示 を設定しましたが、それが原因であるかどうかはわかりません。
アップルにはこの問題のサポートドキュメントがあります 。問題の修正には、ファイル_/etc/Apache2/users/yourusername.conf
_(yourusernameがアカウントshort nameである、たとえばdanielbeck
を作成します。通常は_/Users
_)のホームフォルダーの名前と次の内容:
_<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
_
その後、_Sudo chown root:wheel /etc/Apache2/users/yourusername.conf
_を実行してApacheを再起動します。
Apacheがファイルを表示するには、Apacheを実行するユーザー(おそらくwww
または_www
)がこれらのユーザーのサイトディレクトリにアクセスできる必要があります。 ~/Sites
から/
へのパスを通過できるようにする必要があるため、~/Sites
の内容への読み取り/実行アクセス権は十分ではありません。そのため、/
、/Users
、/Users/myusername
、および/Users/myusername/Sites
はすべて、少なくともa+x
権限を持っていることを確認してください(ディレクトリのeXecuteビットにより、ユーザークラスは、ディレクトリー(読み取りアクセスが許可されていない場合でも)。
ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites
それらのディレクトリのいずれかが最後のx
セット(「その他」のセット)を表示しない場合は、chmod a+x ...
のようなものを使用して、そのディレクトリに設定します。
これらのディレクトリのいずれかのACLが、ユーザーwww
がアクセスを明示的に拒否されていることを示している場合は、chmod
への適切な引数を使用してACLを修正します。
参考までに、私はこれを扱っただけで、ここでの答えは私の特定のケースでは機能しませんでした。私は仮想ホストを構成していましたが、もっと重要なことに、htaccessファイルを実際に機能させる必要がありました。
/etc/Apache2/users/USERNAME.confファイルで「AllowOverride None」を「AllowOverride All」に変更したところ、すべてのサイトが禁止され始めました。
元に戻した後、httpd-vhosts.confファイルの1つのサイトに対してのみ変更しました。そのサイトのみが禁止されました。
ログを調べて、問題がURLの書き換えとFollowSymLinksの欠如にあることを確認した後、USERNAME.confファイルに戻りました。 「AllowOverride None」を「AllowOverride All」に切り替え、次の行に「Options + FollowSymLinks」を追加しました。
物事は働き始めました。私はWindowsでxamppを使用していましたが、私のようなダミーのために、サーバー全体でこれらの設定の多くが既に設定されていました。
2011年10月のLionの更新も追加する必要がありました
UserDirが有効になっているので、/ etc/Apache2/extra/httpd-userdir.confは次のようになります。
UserDir enabled
UserDir Sites
#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/Apache2/users/*.conf
<IfModule bonjour_module>
RegisterUserSite customized-users
</IfModule>
同じ問題がありました。私の(古い)アカウントにアクセスできませんでしたが、Lionへのアップグレード後に作成された別のユーザーのアカウントは問題なく機能しました。
/etc/Apache2/users/USERNAME.confが次のようになっていることを確認してください:
<Directory "/Users/USERNAME/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
sudo chown root:wheel /etc/Apache2/users/USERNAME.confを実行します
このアクセス許可設定はOSのアップグレード中に設定されていないようで、Apacheユーザーは構成ファイルを読み取ることができず、エラーがスローされます。
少なくともこれで解決しました。
最初の質問のコメントから会話を続ける-/etc/Apache2/httpd.conf
ファイル。私のマシンでは、これがあります:
# User home directories
Include /private/etc/Apache2/extra/httpd-userdir.conf
あなたのコメントはコメントアウトされているようです。 10.5から10.6に移動してデフォルトが変更されたときに、手作業でこれを変更したことを漠然と覚えています。
これはおそらく明白ですが、ファイルはrootが所有するため、Sudo
を使用してファイルを編集する必要があります。
私のケースはXAMPP + Mac OS X 10.7 + Dropboxフォルダ内のディレクトリです(Stack Overflowで別の question を相互参照しています)
403 Access ForbiddenはApacheによって報告されているため、上記のコメントに従って、/XAMPP/xamppfiles/etc/httpd.conf
のUserをUser nobody
からUser my_user_name
に変更しました。 Apacheを再起動すると、問題なく動作します。
おそらく Indexes がオンになっていない可能性があります。そうでない場合は、インデックスファイルを作成する必要があります(index.html
またはindex.php
)またはファイルを明示的に指定します。つまり、http://localhost/~me/mypage.html
。