web-dev-qa-db-ja.com

authz_coreがアクセスを拒否し続ける

このチュートリアル( https://wiki.Apache.org/httpd/PHP-FPM )に従って多かれ少なかれWebサーバーを構成しましたが、PHP機能します。HTMLファイルは正常に配信されます。次のエラーメッセージが表示されます:

mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of Require all denied: denied
mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of <RequireAny>: denied
127.0.0.1 [client <myip>:36570] AH01630: client denied by server configuration: proxy:fcgi://127.0.0.1:9000/var/www/html/test.php

これが私のPHPファイルです:

www@<server>:/var/www/html$ ls -l
-rw-rw----  1 www www-data    26 Sep  6 09:14 test.php

ご覧のとおり、ファイルの所有者は「www」です。ウェブサーバーと「php-fpm」は「www-data」として実行されています。

「Apache.conf」の基本的な設定は次のとおりです。

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

これが私の仮想ホストの設定です:

<VirtualHost *:80>
  ServerAdmin [email protected]

  DocumentRoot /var/www/html

  <Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>

  ErrorLog /var/log/Apache2/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel debug

  CustomLog /var/log/Apache2/access.log combined
  ServerSignature Off

  # Enable forwarding of php requests via php-fpm
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
</VirtualHost>

「すべて許可する」の部分はphpファイルへのアクセスを妨げ、mod_authzはそれで満足するだろうという印象を受けました。

「php-fpm」が期待どおりにリッスンしていることをすでに確認しました。

www@<server>:/etc/php5/fpm/pool.d$ netstat -an | grep :9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

今、私は次にどこを見ればいいかわからなくなった。助言がありますか?

2
Stephan Klein

要求されたとおり、ここにいくつかの追加説明付きの答えがあります。

「クライアントがサーバーの設定によって拒否されました」というエラーにはいくつかの非常に具体的な原因があり、そのすべてをここで詳しく説明します http://wiki.Apache.org/httpd/ClientDeniedByServerConfiguration

コメントで述べたように、<Directory>ブロックは、Apache自体がファイルシステムパスにマップするリクエストにのみ影響するため、プロキシされるリクエストには影響しません。

ベースURIパスまたは.phpファイルへのアクセスを許可または拒否しているLocationまたはFilesブロックを探します。

機能しているように見える私が提案した解決策は、仮想ホストに次のブロックを追加することでした。

 <場所/>
すべての許可が必要
 </場所> 

リクエストが元々拒否された原因が他にあるはずなので、設定の残りの部分で他のLocation/Filesブロックを探すことをお勧めします。次のリンクで説明されているように、Apacheがこれらの種類のブロックをマージする方法が原因で、このブロックを追加すると、リクエストされたものが動作を開始できるようになりました。

https://httpd.Apache.org/docs/current/sections.html

2
Unbeliever

実行するApacheバージョンに関連するセクションで変更を加えることは非常に重要です。

たとえば、2.4を実行している場合は、2.4を使用します。

すべての許可が必要

0
Peter V