2013-02-09 48 views
2

我注意到,当一个YouTube页面崩溃时,它会发出一种编码的消息,可以发送给Youtube的开发者,而无需客户获得有关Youtube基础设施的知识并使用节目评析。有没有一种方法来编码PHP中的错误消息

这个想法是一个与你自己的网站做法吗?

+1

这将是像超爽...投票Up – Deadlock 2013-02-09 10:00:06

回答

2

你不需要它与PHP。
与Flash不同,PHP运行在服务器端。所以,只要让PHP记录任何错误消息。
在php.ini文件

log_errors = On 
display_errors = Off 

设置这些选项,你将不再需要志愿者的用户看到他们
但是只有你的Web服务器的错误日志窥视

+2

我想OP想要一种常见的人类无法理解的*散列代码,但是当开发人员*转换*时,这对他们来说意味着什么。 Youtube不会显示**完全**错误,只是编码的消息不可理解。 – j0k 2013-02-09 09:57:58

2

大多数框架时下有能够为生产和开发使用不同的应用程序设置。

在生产模式下(当客户正在使用该网站时),出于安全和设计原因,不应出现任何错误。因此,您经常打开log_errors,并关闭display_errors。当出现不可恢复的错误时,用户会看到类似“出错的事情,我们立即将最好的人员放在上面。”向用户显示一些奇怪的号码是没有意义的,例如“错误代码823”。使用cron worker向您发送错误日志,或者只是手动检查日志,并确保错误消息足够详细,以便您跟踪错误。

在开发模式下(当您在开发期间在本地运行站点时),您可能希望在出现错误时立即查看。因此你打开了display_errors。如果设计中断,你可能不介意,并希望你明白发生了什么。

错误消息是程序员最好的朋友,但你的用户不应该去体验他们。如果发生,请确保给用户一些合理的反馈,而不仅仅是空白页或随机错误代码。

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')); 
相关问题