将PHP-FPM与Apache一起使用时自定义404消息

时间:2015-11-21 13:15:42

标签: php apache mod-fastcgi

我将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页面?

2 个答案:

答案 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