在javascript呈现的页面上显示开发php错误
我曾经用php呈现我所有的html,然后在完成时回显一个html字符串。当我的测试站点出现php错误时(这是开发过程中的错误,就像拼写错误的变量),我会回显错误并退出。很容易看到错误并快速修复。当该网站是活的,我会显示一个一般错误,并通过电子邮件发送错误的细节。这些实时错误不太常见,电子邮件是完美的 目前,我正在使用javascript/jquery呈现页面。现在,当PHP错误发生时,错误不会呈现在页面上。我可以通过电子邮件获得错误,但有时我甚至不知道发生了错误。控制台中没有错误,页面(页眉和页脚除外)将为空 因此,为了显示php错误,我首先执行所有php代码。错误将按预期显示。在php中,我回显页眉和页脚html。javascript代码随后在content div上运行。在此之后的任何php错误都将不可见或很难找到。我能够发送一封电子邮件的错误,这是我现在的调试方法-似乎不正确 以下是我当前的错误处理程序:在javascript呈现的页面上显示开发php错误,javascript,php,html,Javascript,Php,Html,我曾经用php呈现我所有的html,然后在完成时回显一个html字符串。当我的测试站点出现php错误时(这是开发过程中的错误,就像拼写错误的变量),我会回显错误并退出。很容易看到错误并快速修复。当该网站是活的,我会显示一个一般错误,并通过电子邮件发送错误的细节。这些实时错误不太常见,电子邮件是完美的 目前,我正在使用javascript/jquery呈现页面。现在,当PHP错误发生时,错误不会呈现在页面上。我可以通过电子邮件获得错误,但有时我甚至不知道发生了错误。控制台中没有错误,页面(页眉和页
$message = "<p>Nice Job moron: A pos error occurred in script '$e_file' on line $e_line: $e_message\n<br />";
// Add the date and time:
$message .= "Date/Time: " . date('n-j-Y H:i:s') . "\n<br />";
// Append $e_vars to the $message:
$message .= "<pre>Error Variables:<br />" . print_r ($e_vars, 1) . "</pre>\n</p>";
// what is the url?
$message .= "<p><pre>URL: " .getPageURL() . "</pre>\n</p>";
$message .= '<pre>Session variables:<br />' . print_r($_SESSION,1). "</pre>\n</p>";
$message .= '<pre>Bactrace:<br />' . print_r(debug_backtrace(),1). "</pre>\n</p>";
if (!LIVE)
{
// Send an email to the admin:
mail(SUPPORT_EMAIL, 'TEST Site Error!', $message, 'From: ' . SUPPORT_EMAIL);
// Development (print the error).
echo '<div class="error">' . $message . '</div><br />';
}
else
{
// Send an email to the admin:
mail(SUPPORT_EMAIL, 'Site Error!', $message, 'From: ' . SUPPORT_EMAIL);
// Only print an error message if the error isn't a notice:
include(HEADER_FILE);
if ($e_number != E_NOTICE)
{
echo '<div class="error">A system error occurred. We apologize for the inconvenience.</div><br />';
}
echo '<div class="error">An Error has occurred and has been emailed to the administrator. Please note the conditions that caused this error and send a note to the administrator</div><br />';
}
$message=“干得好,笨蛋:脚本“$e_文件”的第$e_行:$e_message\n行出现pos错误
”;
//添加日期和时间:
$message.=“日期/时间:”。日期('n-j-Y H:i:s')。“\n
”;
//将$e_vars附加到$message:
$message.=“错误变量:
”。打印(1美元)。“\n”;
//什么是url?
$message.=“URL:”.getPageURL()。“\n”;
$message.='会话变量:
'。打印(会话,1)。“\n”;
$message.='Bactrace:
'。打印(调试回溯(),1)。“\n”;
如果(!LIVE)
{
//向管理员发送电子邮件:
邮件(支持电子邮件,“测试站点错误!”,$message,“发件人:”。支持电子邮件);
//开发(打印错误)。
回显“.$message”。
;
}
其他的
{
//向管理员发送电子邮件:
邮件(支持电子邮件,“站点错误!”,$message,“发件人:”。支持电子邮件);
//仅当错误不是通知时才打印错误消息:
包括(头文件);
如果($e_编号!=e_通知)
{
echo“出现系统错误。我们为给您带来的不便深表歉意。
”;
}
echo“发生错误并已通过电子邮件发送给管理员。请注意导致此错误的情况,并向管理员发送一份说明
”;
}
这是我在stackoverflow上从问题中找到的一个错误处理程序
我希望这能奏效,但事实并非如此。看起来脚本执行停止,并且没有发生html呈现
//新的错误处理
$(“#内容”).append(“”);
$(“#content”).append('Show me all PHP runtime errors');
var nerrors=0;//Javascript中的PHP错误计数
函数phperors()
{
//包装PHP代码的Javascript函数
是包含php函数“.php”的javascript文件的扩展名?否则不能在文件中执行php代码。是的,转储脚本的文件是.php.php标记,脚本开始执行。所有可重用的javascript都在.js文件中.php中的特定于页面的javascript。我曾在php中构建html字符串,但在关闭div标记时发现了问题,这为我调试html字符串提供了额外的步骤。使用这种javascript方法,我可以创建div,然后以更简单的方式添加。但是我仍然无法处理php错误…尝试了很多事情…仍然在移动我的php gen将页脚文件保存到脚本末尾会使页脚在php错误时失败而不显示,因此我知道有错误。当我打开页面源代码时,使用我原来的错误处理程序会显示错误。仍然有点傻,但我至少可以得到错误。新的错误处理程序不会显示错误。基本上相同的问题在这里:
//new error handling
$("#content").append('<p id="PHPError"> </p>');
$("#content").append('<button onclick="PHPErrors()">Show me all PHP runtime errors</button>');
var nerrors = 0; // PHP Errors count in Javascript
function PHPErrors()
{
// Javascript Function that wraps the PHP Code
<?php
// MyErrorHandler is my function that my custom error handler
// uses with error parameters in that given order.
function myErrorHandler($errno, $errstr, $errfile, $errline) {
echo 'ERror';
echo "document.getElementById('PHPError').innerHTML += " .
"\"$errno: $errstr ($errline)<br>\";\r\n";
echo "nerrors = nerrors + 1;\r\n";
return true;
}
// That's the line the set my custom new error-handling
// disabling the default error handling
$old_error_handler = set_error_handler("myErrorHandler");
// Below random PHP code full of errors
$b = $a; // PHP Error 1
$c = $a +1; // PHP Error 2
$d = $a + 1; // PHP Error 3
$e = $_SESSION['glove']; // PHP Error 4
?>
// No PHP runtime error deserves a nice messagen
if (nerrors===0)
{
document.getElementById('PHPError').innerHTML =
"Well done! PHP without errors.";
}
} // End Javascript Function
$(document).ready(function()
{PHPErrors()});
<!DOCTYPE html >
<html lang="en">
<head>
<meta charset="utf-8">
<title>Create MFG Brand</title>
<link rel="stylesheet" href="https://www.embrasse-moi.com/POS_TEST/Engine/includes/css/style.css" type="text/css" media="all" />
<script>var POS_URL ='https://www.embrasse-moi.com/POS_TEST';</script><script>var LOGOUT_URL ='https://www.embrasse-moi.com/POS_TEST/Engine/login/logout.php';</script><script>POS_ENGINE_URL = "https://www.embrasse-moi.com/POS_TEST/Engine"</script>
<script type="text/javascript" src="https://www.embrasse-moi.com/POS_TEST/3rdParty/jQuery/jquery-1.11.2.min.js"></script>
<link type="text/css" href="https://www.embrasse-moi.com/POS_TEST/3rdParty/jQueryUI/jquery-ui-1.11.4.custom/jquery-ui.css" rel="Stylesheet" />
<script type="text/javascript" src="https://www.embrasse-moi.com/POS_TEST/3rdParty/jQueryUI/jquery-ui-1.11.4.custom/jquery-ui.min.js"></script>
<script src="https://www.embrasse-moi.com/POS_TEST/Engine/includes/javascript/javascript_library.2015.06.02.js"></script>
<script src="https://www.embrasse-moi.com/POS_TEST/Engine/includes/javascript/check_login.2013.02.16.js"></script>
</head>
<body style="background-color:rgb(255,255,125);">
<div id="header" class =></div>
<div id="content" onmousemove ="UserInput()" onclick="UserInput()" onkeypress="UserInput()" onscroll="UserInput()">
<script src="brand.2015.08.03.js"></script>
<script src="https://www.embrasse-moi.com/POS_TEST/Engine/includes/javascript/mySQLTable.2015.08.04.js"></script>
</div><div id="footer">
</div>
</body>
</html>
<script>
$("#content").append('<p id="PHPError"> </p>');
$("#content").append('<button onclick="PHPErrors()">Show me all PHP runtime errors</button>');
var nerrors = 0;
function PHPErrors()
{
ERrordocument.getElementById('PHPError').innerHTML += "8: Undefined variable: a (113)<br>";
nerrors = nerrors + 1;
ERrordocument.getElementById('PHPError').innerHTML += "8: Undefined variable: a (114)<br>";
nerrors = nerrors + 1;
ERrordocument.getElementById('PHPError').innerHTML += "8: Undefined variable: a (115)<br>";
nerrors = nerrors + 1;
ERrordocument.getElementById('PHPError').innerHTML += "8: Undefined index: glove (116)<br>";
nerrors = nerrors + 1;
if (nerrors===0) {
document.getElementById('PHPError').innerHTML =
"Well done! PHP without errors."; }
}
$(document).ready(function()
{PHPErrors()});
var type = "view";
var pos_manufacturer_id = 7;
var mfg_tbl_def = [json data sent by php];
var mfg_data = {json data from php};
var account_link = [json data from php];
var act_table_def = [json data from php];
var account_select_table_def = ERrordocument.getElementById('PHPError').innerHTML += "8: Undefined variable: table_object_name (285)<br>";
nerrors = nerrors + 1;