имеется php7.2 nginx 1.7.12 Debian 9
стоит условие на 404 ошибку, в котором при выполнение устанавливается редирект
Код |
---|
define('ERROR_PATH_404', '/404.php');
AddEventHandler('main', 'OnEndBufferContent', 'Error_404', 101);
function Error_404() {
global $APPLICATION;
if (!defined('ERROR_404') || ERROR_404 != 'Y') {
return;
}
if ($APPLICATION->GetCurPage() != ERROR_PATH_404) {
header('X-Accel-Redirect: '.ERROR_PATH_404);
exit();
}
}
|
в 404.php
Код |
---|
<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("404 Not Found");
?>
<div class="container">
<div class="w-100">
<h1 class="title-404"><?=$APPLICATION->GetTitle();?></h1>
</div>
<span> страница не найдена или недостаточно прав доступа</span>
<?$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"home",
Array(
"FORGOT_PASSWORD_URL" => "/profile/register.php",
"PROFILE_URL" => "/profile/",
"REGISTER_URL" => "/profile/register.php",
"SHOW_ERRORS" => "Y"
)
);?>
</div>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
|
при таком редиректе выходит error 500.
Если открыть 404.php прямым запросом, то открывается нормально,
Если убрать include и require, ошибка будет от php на несуществующие переменные и классы.
Если инклудить простой файл (любой созданный не имеющий отношения к битриксу), то отрабатывается нормально.
Т.е. ошибка со стороны битрикса.
Подскажите куда дальше копать?
из логов:
Код |
---|
[error] 2240#2240: *1 rewrite or internal redirection cycle while internally redirecting to "/404.php" while reading response header from upstream,
client: ***.***.***.***, server: *********, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.2-fpm.sock", host: "**********",
referrer: "http://**********/"
|