Я пытаюсь прочитать файл, когда в моих сценариях возникает ошибка, поэтому я могу отправить страницу пользовательской ошибки.Пользовательские ошибки из файла
При использовании ob_start/set_error_handler я не могу использовать file_get_contents или ob_start в обратном вызове, чтобы получить содержимое моего шаблона ошибки.
Кто-нибудь знает, как я могу вывести свой пользовательский шаблон (и использовать eval) в обратном вызове?
Edit: Некоторый код
error_reporting(E_ALL);
ini_set("display_errors", 1);
function fatal_error_handler($buffer) {
if (ereg("(error</b>:)(.+)(<br)", $buffer, $regs)) {
$ErrorString = preg_replace("/<.*?>/","",$regs[2]);
error_log($ErrorString);
$template = file_get_contents(sprintf('%s/errors/Error.php', TEMPLATES));
return eval(sprintf('?>%s<?', $template);
//return "ERROR CAUGHT check log file";
}
return $buffer;
}
function handle_error ($errno, $errstr, $errfile, $errline)
{
error_log("$errstr in $errfile on line $errline");
if($errno == FATAL || $errno == ERROR){
ob_end_flush();
echo "ERROR CAUGHT check log file";
exit(0);
}
}
ob_start("fatal_error_handler");
set_error_handler("handle_error");
выше просто отображает пустую страницу.
error_reporting(E_ALL);
ini_set("display_errors", 1);
function fatal_error_handler($buffer) {
if (ereg("(error</b>:)(.+)(<br)", $buffer, $regs)) {
$ErrorString = preg_replace("/<.*?>/","",$regs[2]);
error_log($ErrorString);
ob_start();
include(sprintf('%s/errors/Error.php', TEMPLATES));
$template = ob_get_contents();
ob_end_clean();
return eval(sprintf('?>%s<?', $template));
//return "ERROR CAUGHT check log file";
}
return $buffer;
}
function handle_error ($errno, $errstr, $errfile, $errline)
{
error_log("$errstr in $errfile on line $errline");
if($errno == FATAL || $errno == ERROR){
ob_end_flush();
echo "ERROR CAUGHT check log file";
exit(0);
}
}
ob_start("fatal_error_handler");
set_error_handler("handle_error");
и выше дает следующее:
Fatal error: ob_start() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in output buffering display handlers in /var/www/index.php on line 16
Примеры кода всегда добро пожаловать, чтобы уточнить, что вы имеете в виду :) – jakeisonline