我注意到,当youtube页面崩溃时,它会发出一种编码信息,可以发送给Youtube的开发人员,而客户无需了解Youtube基础设施和使用的程序。
这个想法是否适用于您自己的网站?
答案 0 :(得分:2)
PHP不需要它 与Flash不同,PHP在服务器端运行。因此,只需让PHP记录任何错误消息 在php.ini文件中设置这些选项
log_errors = On
display_errors = Off
您将无需志愿者用户查看 但只有您的网络服务器的错误日志才能查看
答案 1 :(得分:2)
现在大多数框架都能够使用不同的应用程序设置进行生产和开发。
在生产模式下(当客户使用网站时)出于安全性和设计原因,不应出现任何错误。因此,您经常打开log_errors,并关闭display_errors。当出现不可恢复的错误时,会向用户显示“出了问题,我们会立即将最好的人员放在上面”。向用户显示一些奇怪的数字是没有意义的,比如“错误代码823”。使用cron worker向您发送错误日志,或者只是手动检查日志,并确保错误消息足够冗长,以便您跟踪错误。
在开发模式下(当您在开发期间在本地运行网站时),您可能希望在出现错误时立即查看错误。因此,您打开display_errors。你可能不介意设计是否破裂,希望你能理解发生了什么。
错误消息是程序员最好的朋友,但您的用户永远不必体验它们。如果发生这种情况,请务必向用户提供一些明智的反馈,而不仅仅是空白页或随机错误代码。
答案 2 :(得分:0)
只是想到创建一个自定义错误处理程序,使用一些基本编码/解码功能,这取决于你扩展这个想法:
// Set error handler
set_error_handler("customError");
// The error function handler
function customError($error, $errorMessage, $errorFile, $errorLine){
echo(encodeError("<b>Error</b> [$error]: $errorMessage, on line $errorLine in $errorFile ."));
}
function encodeError($string){
$array = str_split($string,1);
$results = array();
foreach ($array as $value) {
$results[] = ord($value);
}
return(base64_encode(implode(".", $results)));
}
function decodeError($string){
$array = explode(".", base64_decode($string));
$results = array();
foreach ($array as $value) {
$results[] = chr($value);
}
return (implode("", $results));
}
// Trigger error
echo(3/0);
// We the developers decode it with the decode function
echo('<br><hr>'.decodeError('NjAuOTguNjIuNjkuMTE0LjExNC4xMTEuMTE0LjYwLjQ3Ljk4LjYyLjMyLjkxLjUwLjkzLjU4LjMyLjY4LjEwNS4xMTguMTA1LjExNS4xMDUuMTExLjExMC4zMi45OC4xMjEuMzIuMTIyLjEwMS4xMTQuMTExLjQ0LjMyLjExMS4xMTAuMzIuMTA4LjEwNS4xMTAuMTAxLjMyLjU2LjUzLjMyLjEwNS4xMTAuMzIuNjcuNTguOTIuMTE5Ljk3LjEwOS4xMTIuOTIuMTE5LjExOS4xMTkuOTIuMTAxLjEyMC4xMTIuMTA4LjQ4LjEwNS4xMTYuOTIuMTIyLjEwMS4xMTQuMTExLjQ5LjQ2LjExMi4xMDQuMTEyLjMyLjQ2'));