web-dev-qa-db-ja.com

YosemiteでのApache localhost 403エラー

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 参照用。

46

ハードドライブ全体を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>
80
jnovack

ファイルを編集します:/private/etc/Apache2/httpd.conf

250行目(ヨセミテ)の変更:

Options FollowSymLinks Multiviews

に:

Options FollowSymLinks Multiviews Indexes

次に、ターミナルで次を実行します。

Sudo apachectl restart
45
tomvon

これは非常に遅い答えかもしれませんが、私はほとんどのスタックオーバーフローソリューションに従いましたが、それらのどれも私をさまざまな理由で助けませんでした。そこで、このローカルホストを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に移動して、プロジェクトインデックスファイルがブラウザに表示されるかどうかを確認します。

ハッピーコーディング..

29
mahi

この記事 のアドバイスは私を助けてくれました。

特に「ヨセミテのみ」セクション:

最初に、デフォルトでファイルシステム全体へのアクセスを拒否することでマシンを保護するのに役立つディレクティブがあります。このディレクティブを削除する方法を紹介します。開発用のマシンではより簡単だからです。コードのセクションは220行目から223行目まで実行されます。コメントアウト(各行の前に「#」を配置)するか、このセクションを削除することができます。

そしてセクションは...

<Directory />
 AllowOverride none
 Require all denied
</Directory>

注:

他の人がこれについてさらに詳細にフォローアップしているように、上記の方法は安全ではありません。

8
jody tate

localhostが禁止されている理由は2つあります。1つ目はApache設定が正しくないためであり、2つ目はvhostを設定したがlocalhost

  1. Sudo nano /etc/Apache2/extra/httpd-vhosts.conf
  2. このコードを追加

`

<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>  
  1. 保存してApacheを再起動します

`

Sudo apachectl restart

それは動作するはずです:)

2
Ade Yahya

提案では、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

サイトをチェックしてください!

0
Huupke