当PHP代码中存在任何解析错误时,我可以重定向到另一个页面吗?通过设置错误处理程序,我只能重定向警告错误,注意错误但不解析错误。请帮帮我。 我的代码是: -
<?php
set_error_handler("error_handle");
function getIp(){
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
function error_handle($errno,$error_message,$error_file,$error_line,$error_context){
ob_start();
session_start();
include 'dbconnection.php';
echo $hash1=$_SESSION['Hash1'];
echo $hash3=$_SESSION['Hash3'];
$ip=getIp();
header('Location:error.php');
}
echo $test;
?>
答案 0 :(得分:2)
PHP不会呈现具有解析错误的代码。在命令行中使用PHP的-l(小写L)选项很容易捕获解析错误:
$ php -l myfile.php
这不会运行代码,只会报告任何解析错误。
编辑:我不建议使用代码来检测解析错误,但只是为了在他说“无法完成”时证明Hobo错误,如果检测到解析错误,以下函数(虽然不推荐)会重定向在包含文件中。请注意,此解决方案要求在服务器上安装php-cli:/**
* @param string $filename
* @return NULL
*/
function safeInclude($filename)
{
exec('php -l ' . $filename, $output, $parse_error);
if (!$parse_error)
{
include($filename);
}
else
{
// include another file or redirect using header()
}
}