在jQuery AJAX中捕获PHP错误正文



我有一个AJAX构建,其功能类似于CMD行框。它允许我在禁用MySQL"从文件导入"的服务器上分解和清理100,000 +行CSV文件。每个客户的"擦洗"过程都是不同的。因此,我构建了这个工具,以允许我包含各种PHP脚本

除了 1 个领域的错误处理外,它运行良好PHP 错误级别

我想使用 JS,特别是控制台.log((记录错误

然后考虑以下 JS

$.ajax({
type: 'POST', 
dataType: 'text', //also tried json
url: PHP_SCRIPT, //for sake of referance
data: $.param(data), // param object values as POST values
cache: false, 
error: function(error) { 
console.log("fubar:" +  JSON.stringify(error));

如果我在PHP_SCRIPT中导致错误(不使用try/catch和输出作为JSON处理(,那么我得到以下"模棱两可"的回复

stringify:{"readyState":4,"responseText":"","status":500,"statusText":"error"}

问题是:响应文本为空。

PHP_SCRIPT中真正发生的是此错误:

Fatal error: Uncaught UnexpectedValueException: RecursiveDirectoryIterator::

如果我运行PHP脚本,我当然可以看到(我知道为什么会发生这种情况,我的问题不是关于RDI错误(。考虑也可能是其他错误:失败的包含,代码错误等。但是JS和jQuery AJAX似乎并没有"捕获"失败的PHP脚本的主体。

目标:我想"捕获"PHP错误并使用console.log(((甚至是我的临时CMD行框(显示它们,这样我就不必切割PHP_SCRIPT并单独调试每一行。我不明白为什么错误.响应文本没有捕获输出。

理想情况下- 上面的 PHP"致命错误"应该被捕获为 TEXT 并在日志中输出。

注意:我对数据库查询进行了 PDO try/catch 处理,我可以在其中输出 success.error 对象并适当地处理它,捕获 PDO 异常并将其记录到控制台。唉,我认为没有有用的方法来处理其他PHP错误(例如失败的包含或其他常见的PHP错误(。如果这很重要 - 我正在使用带有nonce和die((的WordPress Admin AJAX,我的脚本工作得很好,但是在新脚本的开发过程中捕获错误很烦人。

问题摘要:

  1. 有没有办法捕获所有/任何未输出为 JSON 和控制台的 PHP 错误.log当 $.ajax 发生错误时?
  2. 有没有办法捕获PHP错误的"正文"和控制台.log呢?

感谢您对此事的考虑

更新--- 添加了视频以澄清:http://www.screencast.com/t/ZyCeaMyAxBO

像这样的东西将捕获所有未捕获的异常并以 JSON 格式输出消息。

set_exception_handler(function($e) {
$msg = "Error: ";
// maybe you want to treat some differently?
if ($e instanceof PDOException) {
$msg = "Database error: ";
}
// you can access all properties of the exception to build a reply
$msg .= $e->getMessage();
header("Content-Type: text/json");
echo json_encode(["message" => $msg]);
});

您无法捕获所有错误情况,主要是因为您必须在 PHP 中编写错误处理程序,并且一些错误(如解析错误(导致脚本甚至无法编译,因此根本无法执行。

但是使用 set_error_handler((/set_exeception_handler(( 您可能可以覆盖很大一部分......

相关内容

  • 没有找到相关文章

最新更新