Mac OS X Yosemiteを新しくインストールしました。 Apacheを構成し、「users/user/Sites」を755に変更しました。localhostにアクセスすると、403 Forbidden "You don't have permission to access / on this server"
を受け取ります。同じことが、ホストファイルに追加する他のサイトでも発生します。
this post のヘルプに従ってユーザーディレクトリを設定しようとしました。この人は MacRumors thread Apacheの問題があることを知っていますが、多くの提案はしませんでした。
私のディレクトリのアクセス許可は次のようになります
drwxr-xr-x 29 root wheel 1054 Aug 11 07:30 /
drwxr-xr-x 6 root admin 204 Aug 11 07:29 /Users/
drwxr-xr-x+ 26 zachshallbetter staff 884 Aug 11 11:57 /Users/zachshallbetter/
0: group:everyone deny delete
drwxr-xr-x 5 zachshallbetter staff 170 Aug 11 10:16 /Users/zachshallbetter/Sites
誰でも提案や助けを提供できますか?ここにリンクがあります hosts および httpd.conf ファイルおよび error logs 参照用。
ハードドライブ全体をWebサーバープロセスに公開したくない場合。実際、httpd.conf
の215-217行目:
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
Apache 2.4(OSX 10.10 Yosemite)は、Apache 2.2(OSX 10.9)とは構造が異なります Module mod_authz_coreのディレクトリディレクティブ 。
EDIT:ApacheをSTARTからセットアップする場合は、 この命令セット に従ってくださいOSX 10.10 YosemiteでApacheとphpをセットアップします。
既にmod_userdir.so
が有効になっていると仮定すると、問題はユーザーの.confファイル(/etc/Apache2/users/username.conf
)内にあり、以下を編集(または追加)します。
Apache 2.2:
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.9 / Apache 2.2
Order from deny, allow
</Directory>
Apache 2.4
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.10 / Apache 2.4
Require all granted
</Directory>
ファイルを編集します:/private/etc/Apache2/httpd.conf
250行目(ヨセミテ)の変更:
Options FollowSymLinks Multiviews
に:
Options FollowSymLinks Multiviews Indexes
次に、ターミナルで次を実行します。
Sudo apachectl restart
これは非常に遅い答えかもしれませんが、私はほとんどのスタックオーバーフローソリューションに従いましたが、それらのどれも私をさまざまな理由で助けませんでした。そこで、このローカルホストをMac Yosemiteで(Symlinksも使用して)動作させるために、デバイスを新しいYosemite OSとしてリセットしました。
私が正確に行った手順:
Sudo nano /etc/Apache2/httpd.conf
次の行のコメントを解除します。
#LoadModule php5_module libexec/Apache2/libphp5.so
to
LoadModule php5_module libexec/Apache2/libphp5.so
#LoadModule userdir_module libexec/Apache2/mod_userdir.so
to
LoadModule userdir_module libexec/Apache2/mod_userdir.so
#Include /private/etc/Apache2/extra/httpd-userdir.conf
to
Include /private/etc/Apache2/extra/httpd-userdir.conf
保存して終了(Ctrl + X Enterを押し、Yを押してもう一度入力)
Sudo nano /etc/Apache2/extra/httpd-userdir.conf
行16で次の行のコメントを外します。
#Include /private/etc/Apache2/users/*.conf
to
Include /private/etc/Apache2/users/*.conf
保存して終了(Ctrl + X Enterを押し、Yを押して再度入力)。
次に、Apache Usersフォルダーに移動して、構成ファイルが存在するかどうかを確認します
cd /etc/Apache2/users/
このフォルダーに構成ファイルがない場合は、作成してください
Sudo nano /etc/Apache2/users/<**YOUR USERNAME**>.conf
<YOUR USERNAME>
をマシンの名前に置き換えます(ターミナルでwhoami
と入力し、その名前を入力します)。
.confファイルを作成した後、以下の行をそのファイルにコピーします
<Directory "/Users/<YOUR USERNAME>/Sites/">
AddLanguage en .en
LanguagePriority en fr de
ForceLanguagePriority Fallback
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from localhost
Require all granted
</Directory>
保存して終了
Apacheを再起動します
Sudo apachectl restart
ブラウザに移動してlocalhostと入力すると、期待どおりに動作するはずです。
注:コンピューターを再起動しようとしても機能しない場合
index.htmlをindex.html.enとして作成します。ここにあります。
open /Library/Webserver/Documents/
index.html.enを右クリックしてindex.htmlに複製し、元のままにします
ブラウザで再試行し、成功した場合は、重複したファイルを削除できます
明確にするために、元のファイルindex.html.en
をそのままにして、このステップ全体でそのまま、無傷で残します。
なぜ私はこの謎めいた回り道をしなければならなかったのかわからない-おそらく私のマシンにローカルなものですが、上記のガイドに従っても問題がある場合は、それが役立つかどうかを確認してください。
SymLinks:
成功した場合は、ブラウザに次のように表示されます
It works!
次に、プロジェクトへのシンボリックリンクを作成します。
ln -s <Path_to_your_Project(index_file)> <Path_to_webroot>
たとえば、ドキュメントフォルダーにプロジェクトフォルダーがある場合は、webrootでインデックスファイルを指定します。
ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink
シンボリックリンクを作成する権限が必要な場合があります(上記のコマンドをSudoで使用します)
シンボリックリンクをフォローするようにApacheを構成する(tomvonのおかげで、投票するのに十分なポイントがありません)
Sudo nano /private/etc/Apache2/httpd.conf
250行目(ヨセミテ)の変更:
Options FollowSymLinks Multiviews
に:
Options FollowSymLinks Multiviews Indexes
次に、ターミナルで次を実行します。
Sudo apachectl restart
ここでlocalhost/projectlink
に移動して、プロジェクトインデックスファイルがブラウザに表示されるかどうかを確認します。
ハッピーコーディング..
この記事 のアドバイスは私を助けてくれました。
特に「ヨセミテのみ」セクション:
最初に、デフォルトでファイルシステム全体へのアクセスを拒否することでマシンを保護するのに役立つディレクティブがあります。このディレクティブを削除する方法を紹介します。開発用のマシンではより簡単だからです。コードのセクションは220行目から223行目まで実行されます。コメントアウト(各行の前に「#」を配置)するか、このセクションを削除することができます。
そしてセクションは...
<Directory />
AllowOverride none
Require all denied
</Directory>
注:
他の人がこれについてさらに詳細にフォローアップしているように、上記の方法は安全ではありません。
localhost
が禁止されている理由は2つあります。1つ目はApache
設定が正しくないためであり、2つ目はvhost
を設定したがlocalhost
も
Sudo nano /etc/Apache2/extra/httpd-vhosts.conf
`
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Users/username/Sites"
<Directory "Users/username/Sites">
Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all
</Directory>
</VirtualHost>
`
Sudo apachectl restart
それは動作するはずです:)
提案では、Apacheのユーザー固有のconfに焦点を当てることがありますが、デフォルトではこの構成はまったくロードされない場合があります。
Userdirモジュール構成を編集します。
Sudo vi /etc/Apache2/extra/httpd-userdir.conf
ユーザーディレクトリ構成ファイルのインクルードのコメントを解除します。
Include /private/etc/Apache2/users/*.conf
ユーザー名に応じたユーザーディレクトリ設定があることを確認してください。
Sudo vi /etc/Apache2/users/.conf
ホームディレクトリの設定が適切であることを確認してください。
DocumentRoot "/Users/<username>/Sites/" <Directory "/Users/<username>/Sites/"> AllowOverride All Options Indexes MultiViews FollowSymLinks Require all granted </Directory>
Apache(ウェブサーバー)を再起動します
Sudo apachectl restart
サイトをチェックしてください!