Apache-2.4
authz_core 一直拒絕訪問
我根據本教程( https://wiki.apache.org/httpd/PHP-FPM )或多或少地配置了一個網路伺服器,但我無法讓 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 admin@example.com 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
現在我不知道下一步該往哪裡看。有什麼建議麼?
根據要求,這是帶有一些額外解釋的答案。
錯誤“客戶端被伺服器配置拒絕”有一些非常具體的原因,所有這些都在這裡詳細介紹http://wiki.apache.org/httpd/ClientDeniedByServerConfiguration
正如我在評論中提到的, <Directory> 塊不會影響任何被代理的請求,因為它們只會影響 Apache 本身映射到文件系統路徑的請求。
查找允許/拒絕訪問基本 URI 路徑或 .php 文件的任何 Location 或 Files 塊。
我提出的似乎有效的解決方案是將以下塊添加到虛擬主機。
<位置/> 要求所有授予 </位置>
我仍然建議在配置的其餘部分中尋找其他位置/文件塊,因為應該有其他東西導致請求最初被拒絕。添加此塊允許請求開始工作,因為 Apache 合併這些類型的塊的方式,如以下連結中所述。