У меня Apache (2.2.22 на Debian), настроенный для обработки файлов PHP через FastCGI:
<FilesMatch «. +. Php $»>
Приложение SetHandler / 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 Авторизация
Чтобы показать пользовательскую страницу «Файл не найден» (HTTP 404), настроен в Apache следующим образом:
<Каталог «/ home / http / domain / root»>
..
ErrorDocument 404 /pagenotfound.htm
..
</ Directory>
Запросы для несуществующие не-PHP файлы отвечают пользовательским файлом 404 pagenotfound.htm. Нет проблем.
Но запросы на несуществующие файлы PHP отвечают с http-status-header-заголовком «HTTP / 1.1 404 Not Found» и содержимым «File not found.», так что это не моя пользовательская страница с ошибкой. Проблема!
Журнал ошибок Apache показывает (в последнем случае):
[Сб 21 ноября 14:03:07 2015] [ошибка] [клиент xx.xxx.xx.xx] FastCGI: сервер «/ fcgi-bin-php5-fpm» stderr: основной сценарий неизвестен
Как настроить пользовательскую страницу 404 для несуществующих файлов PHP при использовании PHP-FPM?
установите «ProxyErrorOverride on» в конфигурации вашего глобального сервера или на отдельных виртуальных хостах, см. http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyerroroverride
Других решений пока нет …