Я делаю вызов AJAX для PHP-скрипта , выводящего JSON. Когда PHP отображает фатальные ошибки, это делает недействительным мой прекрасный вывод JSON.Не показывать фатальные ошибки php - это бесполезно с моим JSON
JSON строка становится префиксом ↵Fatal error: Call to undefined function iDontExist() in /path/to/place/whereErrorOccured.php on line 80↵
Я пробовал все, что я могу возможно думать о ... увы, здесь мы:
error_reporting(0);
ini_set('html_errors', false);
ini_set('display_errors', false);
function errorHandler($errno, $errstr, $errfile = '', $errline = 0, $errcontext = array()) {
global result;
// do stuff...
http_response_code(200);
$json = json_encode($result);
echo $json;
exit;
}
function fatalHandler() {
$error = error_get_last();
if($error) errorHandler($error["type"], $error["message"], $error["file"], $error["line"]);
}
set_error_handler("errorHandler");
register_shutdown_function("fatalHandler");
Одно замечание, что может или не может помочь : Звонок AJAX - это метод POST. PHP $_SERVER['HTTP_ORIGIN']
настроен так, чтобы разрешить мне вызов.
ли .htaccess установить следующим образом, а
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value error_reporting 0
UPDATE:display_errors
был быть сброшен включаемого сценария. Неустранимые ошибки по-прежнему приводят к тому, что вывод JSON имеет префикс с одним пробелом. В настоящее время используется trim()
, чтобы избавиться от него, что является скорее взломом, чем полным исправлением. Любые предложения будут полезны.
С благодарностью @AzizSaleh за предложение phpinfo()
.
Если вы не хотите Фатальная ошибка будет отображаться, исправить фатальную ошибку. –
Не в этом дело ... Нет ошибки REAL. Я сделал ошибку специально (отсюда: iDontExist()), поэтому, если произошла настоящая фатальная ошибка, она будет выводиться внутри моего JSON, ожидаемого вызовом AJAX. Не снаружи, где он аннулировал мой JSON. –