web-dev-qa-db-ja.com

403Apacheでローカルホストを表示しようとしたときに禁止されたエラー

私のApacheはすべて台無しになっているに違いないと思います。それがうまくいったかどうかはわかりません。 Snow Leopardにアップグレードしました。 このチュートリアル の最初のステップは、Apacheを起動し、 http:// localhost を開いて動作することを確認することです。正常に起動しますが、localhostにアクセスすると、403forbiddenエラーが発生します。

どこから修正すればい​​いのかわからないので、Apacheの新規インストールでうまくいくのではないかと思います。

どう思いますか?

更新:/private/var/log/Apache2/にいくつかのエラーログが見つかりました。ログの1つでこれを見つけました。それが何を意味するのかわからない:

[Tue Nov 10 17:53:08 2009] [notice] caught SIGTERM, shutting down
[Tue Nov 10 21:49:17 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
Warning: DocumentRoot [/usr/docs/dummy-Host.example.com] does not exist
Warning: DocumentRoot [/usr/docs/dummy-Host2.example.com] does not exist
httpd: Could not reliably determine the server's fully qualified domain name, using Andrews-Mac-Pro.local for ServerName
mod_bonjour: Skipping user 'andrew' - cannot read index file '/Users/andrew/Sites/index.html'.
[Tue Nov 10 21:49:19 2009] [notice] Digest: generating secret for digest authentication ...
[Tue Nov 10 21:49:19 2009] [notice] Digest: done
[Tue Nov 10 21:49:19 2009] [notice] Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8k DAV/2 PHP/5.3.0 configured -- resuming normal operations

更新:dummy-Host.example.com-error_logファイルにも何かが見つかりました。ちなみに私はこれらのダミーホストのものを設定しませんでした。これはデフォルトの構成ですか?

[Tue Nov 10 21:59:57 2009] [error] [client ::1] client denied by server configuration: /usr/docs

更新:Woohoo!仮想ホスト定義を含むファイルが見つかりました。 /etc/Apache2/extra/httpd-vhosts.confにありました。そこには、これら2つのダミーの仮想ホスト設定がありました。 localhost仮想ホストを追加しました。これが必要かどうかはわかりませんが、以前は機能していなかったため、とにかく実行することにしました。古い仮想ホストを削除し、新しいlocalhost仮想ホストを追加し、Apacheを再起動した後、動作しているようです。したがって、仮想ホストを追加するときはいつでも、このファイルに追加するだけでよいと思いますか?または、Linuxのように、どこかにhostsファイルがありますか?

更新:はい、変更する必要のある/etc/hostsファイルがあります。そのファイルに仮想ホスト名を追加します。

4
Andrew

403エラーが発生した場合は、ディレクトリが存在しないか、そのディレクトリの権限で表示されない可能性があります。

私の問題は、デフォルトの仮想ホスト設定が存在しないディレクトリを指していることでした。

だからここにあなたがすべきことは次のとおりです:(あなたがSnowLeopardにいると仮定して)

  1. 仮想ホスト構成ファイルを見つけて開きます。

    pico /etc/Apache2/extra/httpd-vhosts.conf
    
  2. 仮想ホスト定義がそこにあることを確認してください。そうでない場合は作成してください

    <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/Users/yourusername/Sites/mysite"
    ServerName mysite.local
    ErrorLog "/private/var/log/Apache2/mysite-error_log"
    CustomLog "/private/var/log/Apache2/mysite-access_log" common
    </VirtualHost>
    
  3. 開く/etc/hostsファイルを作成し、仮想ホスト名を追加します。これは私の中にあるものです:

    ##
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting.  Do not change this entry.
    ##
    127.0.0.1          localhost
    255.255.255.255    broadcasthost
    ::1                localhost 
    fe80::1%lo0        localhost
    
    # VIRTUAL Host START
    127.0.0.1          localhost
    127.0.0.1          mysite.local
    # VIRTUAL Host STOP
    
  4. ここでApacheを再起動すると、準備が整います。

    Sudo apachectl restart
    
2
Andrew

また、警告としてラベル付けされています。これは、エラーログの重要な行です。

Warning: DocumentRoot [/usr/docs/dummy-Host.example.com] does not exist

Apacheは、話しかけたときに解決されるファイルを保持するディレクトリを探しています。どうやら、このディレクトリは存在しないため、Apacheは何も解決できません。ディレクトリを作成し、そこにindex.htmlファイルを配置するか、設定ファイルを編集してApacheが別のディレクトリを指すようにします。

0
innaM