Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以符合常规内容类型的JSON格式报告PHP错误_Php_Angularjs_Json_Error Reporting - Fatal编程技术网

以符合常规内容类型的JSON格式报告PHP错误

以符合常规内容类型的JSON格式报告PHP错误,php,angularjs,json,error-reporting,Php,Angularjs,Json,Error Reporting,我将AngularJs用于单页应用程序,并通过JSON与服务器端PHP通信。php标头设置JSON,但从php报告错误: php_flag display_errors 1 php_flag display_startup_errors 1 php_value error_reporting 32767 是html,与常规答案标题的内容类型标题不匹配('content-type:application/json;charset=utf-8'); 因此angularjs不断抛出php错误。我应该

我将AngularJs用于单页应用程序,并通过JSON与服务器端PHP通信。php标头设置JSON,但从php报告错误:

php_flag display_errors 1
php_flag display_startup_errors 1
php_value error_reporting 32767
是html,与常规答案
标题的内容类型标题不匹配('content-type:application/json;charset=utf-8');

因此angularjs不断抛出php错误。我应该使用还是怎么做


为什么应用程序依赖PHP错误? 如果可能,请提供引发错误的代码部分

您永远不应该使用PHP错误来停止应用程序,如果需要返回JSON结果,请执行干净的退出。 您可以使用
try…catch
模式,或者在实际调用之前检查引发错误的语句(例如,检查是否可以继续执行)

请看这里:


始终记住关闭最终应用程序中的错误:它们可能会向攻击者泄漏大量信息(而且,它们看起来很糟糕)。

为什么应用程序依赖PHP错误? 如果可能,请提供引发错误的代码部分

您永远不应该使用PHP错误来停止应用程序,如果需要返回JSON结果,请执行干净的退出。 您可以使用
try…catch
模式,或者在实际调用之前检查引发错误的语句(例如,检查是否可以继续执行)

请看这里:


始终记住关闭最终应用程序中的错误:它们可能会向攻击者泄漏大量信息(而且,它们看起来很糟糕)。

如果您必须将PHP错误/异常返回到客户端,这是不推荐的(但我知道,这更容易开发),那么您需要一个用于PHP的自定义/未捕获处理程序。通过这种方式,您可以自定义错误/异常的显示方式

下面是一个示例代码,它将错误和未捕获的异常作为JSON对象输出

//设置错误处理程序
设置错误处理程序(“api错误处理程序”);
函数api\u错误\u处理程序($errno,$errstr){
返回api_错误($errstr,$errno,500);
}
//设置未捕获异常处理程序
设置异常处理程序(“api异常处理程序”);
函数api_异常处理程序($exception){
返回api_错误($exception->getMessage(),$exception->getCode(),500);
}
//错误/异常帮助程序
函数api_error($error,$errno,$code){
//在生产环境中,您可能希望抑制所有这些详细错误
//并对所有类型的
//错误和例外。
如果($environment=='production'){
$errno=500;
$error='内部服务器错误!';
}
http_响应_代码($code);
标题('Content-Type:application/json');
返回json_编码([
“成功”=>错误,
'errno'=>$errno,
'error'=>$error,
]);
}
但这还不是全部;由于用户定义的错误处理程序无法处理致命错误,因此仍将显示致命错误消息。您需要通过调用
ini\u set()
禁用显示错误:

ini\u集('display\u errors',0);
那么,如何处理致命错误呢?在关机时,可以使用来处理致命错误。在shutdown处理程序中,我们需要通过调用获取最后一个错误信息。因此:

//设置关机处理程序
注册关闭函数(“api错误处理程序”);
函数api\u致命错误\u错误处理程序(){
$error=error_get_last();
if($error&&error\u reporting()&&$error['type']==E\u error){
返回api_错误($error['message'],E_CORE_error,500);
}
}
然后在javascript方面,您必须添加一个错误回调,并向用户显示错误信息


毕竟,为什么不使用成熟的错误/异常处理程序包,而不是实现所有这些呢?满足。

如果您必须向客户端返回PHP错误/异常,这是不推荐的(但我知道,这更易于开发),那么您需要一个用于PHP的自定义/未捕获处理程序。通过这种方式,您可以自定义错误/异常的显示方式

下面是一个示例代码,它将错误和未捕获的异常作为JSON对象输出

//设置错误处理程序
设置错误处理程序(“api错误处理程序”);
函数api\u错误\u处理程序($errno,$errstr){
返回api_错误($errstr,$errno,500);
}
//设置未捕获异常处理程序
设置异常处理程序(“api异常处理程序”);
函数api_异常处理程序($exception){
返回api_错误($exception->getMessage(),$exception->getCode(),500);
}
//错误/异常帮助程序
函数api_error($error,$errno,$code){
//在生产环境中,您可能希望抑制所有这些详细错误
//并对所有类型的
//错误和例外。
如果($environment=='production'){
$errno=500;
$error='内部服务器错误!';
}
http_响应_代码($code);
标题('Content-Type:application/json');
返回json_编码([
“成功”=>错误,
'errno'=>$errno,
'error'=>$error,
]);
}
但这还不是全部;由于用户定义的错误处理程序无法处理致命错误,因此仍将显示致命错误消息。您需要通过调用
ini\u set()
禁用显示错误:

ini\u集('display\u errors',0);
那么,如何处理致命错误呢?在关机时,可以使用来处理致命错误。在shutdown处理程序中,我们需要通过调用获取最后一个错误信息。因此:

//设置关机处理程序
注册关闭函数(“api错误处理程序”);
函数api\u致命错误\u错误处理程序(){
$error=error_get_last();
if($error&&error\u reporting()&&$error['type']==E\u error){