我将Apache(2.2.22在Debian上)配置为通过FastCGI处理PHP文件:
< FilesMatch“。+。php $”>
SetHandler application / x-httpd-php
< / FilesMatch>
动作应用程序/ x-httpd-php / fcgi-bin / php5-fpm虚拟别名
/ fcgi-bin / php5-fpm / fcgi-bin-php5-fpm FastCgiExternalServer
/ fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 600 -pass-header授权
要在Apache中配置自定义文件未找到(HTTP 404)页面,如下所示:
< Directory“/ home / http / domain / root”>
...
ErrorDocument 404 /pagenotfound.htm
...
< /目录>
使用自定义404 pagenotfound.htm文件回答不存在的非PHP文件的请求。没问题。
但不存在的PHP文件的请求是通过http-status-header“HTTP / 1.1 404 Not Found”和内容“File not found。”来回答的,所以不是我的自定义错误页面。问题!
Apache错误日志显示(在后一种情况下):
[Sat Nov 21 14:03:07 2015] [错误] [client xx.xxx.xx.xx] FastCGI:server“/ fcgi-bin-php5-fpm”stderr:主要脚本未知
如何在使用PHP-FPM时为不存在的PHP文件配置自定义404页面?
答案 0 :(得分:3)
在全局服务器配置或单个虚拟主机中设置“ProxyErrorOverride on”,请参阅http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyerroroverride
答案 1 :(得分:0)
当显示'找不到文件'而不是不存在的.php文件的自定义错误页面时(所有其他不存在的文件都会获得正确的自定义错误页面)...
Centos 8,PHP 7.2.11 文件:/etc/httpd/conf.d/php.conf
在SetHandler之后添加'ProxyErrorOverride On'
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
ProxyErrorOverride On
</FilesMatch>
不确定是否需要,但是我照做了:
systemctl restart httpd