你能告诉PHP在发生错误时发送标题(如500)吗?
发布时间:2020-12-13 22:02:23 所属栏目:PHP教程 来源:网络整理
导读:在我当前的项目中,我使用正常的HTTP请求查询 PHP,但也通过AJAX查询,我有时返回JSON格式的数据,有时返回普通文本.发生错误时,在正常请求中,您会看到错误消息并可以对其执行某些操作.另一方面,对于AJAX请求,您无法确定是否收到错误或您想要的数据,因为它没有直
在我当前的项目中,我使用正常的HTTP请求查询
PHP,但也通过AJAX查询,我有时返回JSON格式的数据,有时返回普通文本.发生错误时,在正常请求中,您会看到错误消息并可以对其执行某些操作.另一方面,对于AJAX请求,您无法确定是否收到错误或您想要的数据,因为它没有直接显示 – 您只是遇到麻烦,因为您的应用程序将无法再运行.
所以我想到了一个错误处理系统.我最好的想法是在发生错误时发送一个500“内部服务器错误”标题,所以在我的JS中,当我发送一个AJAX-Request时,我可以简单地检查错误并处理它. 不幸的是,PHP本身并没有发送那种标题(就像你有一个解析错误,或者代码中的某些内容出错). 你能: a)如果发生错误,告诉PHP发送类似500的标题?要么 解决方法
我更喜欢使用Exceptions来处理错误.首先,您需要安装错误到异常的错误处理程序(http://php.net/manual/en/class.errorexception.php,示例1),然后将主应用程序代码包装在try-catch块中并发送catch部分中的适当头.例如:
try { $myApplication->run(); } catch(Exception $e) { // log or otherwise register the error header('HTTP/1.1 500 Internal Server Error'); } 不幸的是,这不适用于所谓的“致命错误”,处理这些你必须使用像这样的愚蠢技巧 ob_start(); register_shutdown_function(function() { $p = ob_get_contents(); if(preg_match('~Fatal error~',$p)) header('HTTP/1.0 500 Internal Server Error'); }); ...your code... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |