我注意到当 youtube 页面崩溃时,它会发出一种编码消息,可以将其发送给 Youtube 的开发人员,而无需客户了解有关 Youtube 基础设施和使用的程序的知识。
这个想法是否适用于您自己的网站?
我注意到当 youtube 页面崩溃时,它会发出一种编码消息,可以将其发送给 Youtube 的开发人员,而无需客户了解有关 Youtube 基础设施和使用的程序的知识。
这个想法是否适用于您自己的网站?
如今,大多数框架都能够将不同的应用程序设置用于生产和开发用途。
在生产模式下(当网站被客户使用时),出于安全和设计原因,不应看到任何错误。因此,您经常打开 log_errors 并关闭 display_errors。当出现不可恢复的错误时,会向用户显示类似“出现问题,我们将立即派出最好的人员处理”之类的信息。向用户显示一些奇怪的数字是没有意义的,例如“错误代码 823”。使用 cron worker 向您发送错误日志,或者只是手动检查日志,并确保错误消息足够详细,以便您跟踪错误。
在开发模式下(当您在开发过程中在本地运行站点时)您可能希望在错误出现时立即查看它们。因此,您打开 display_errors。如果设计中断,您可能不会介意,希望您了解发生了什么。
错误消息是程序员最好的朋友,但您的用户永远不必体验它们。如果发生这种情况,请确保给用户一些合理的反馈,而不仅仅是空白页或随机错误代码。
PHP 不需要它。
与 Flash 不同,PHP 在服务器端运行。因此,只需让 PHP 记录任何错误消息。
在 php.ini 文件中设置这些选项
log_errors = On
display_errors = Off
并且您不需要志愿者用户来查看它们
,而只需要您的网络服务器的错误日志即可查看
只是想像创建一个自定义错误处理程序,使用一些基本的编码/解码功能,这取决于你来扩展这个想法:
// 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'));