嘿伙计们,我想知道为什么你会“抑制”一个PHP错误?我明显看到了从错误中吐出的额外线的差异……但抑制它有好处吗?
Access denied for user 'user'@'localhost' (using password: YES)
VS
Warning: MysqL_connect() [function.MysqL-connect]: Access denied for user 'user'@'localhost' (using password: YES) in (deleted) on line 8 Access denied for user 'user'@'localhost' (using password: YES)
如果是这样,我应该养成在我的PHP中的mySQL查询开头输入@的习惯吗?
谢谢!
你应该积极地养成抑制错误的习惯.错误是有原因的.相反,在代码中正确和防御地处理它们,并不断完善代码,直到错误消失.
你应该做的事情如下:
$conn = MysqL_connect($host,$user,$pass); // Always test to see if your action/connection/whatever was successful if (!$conn) { // something went wrong. handle the error // Display a message for the user,write a message to `error_log()`,whatever's appropriate } else MysqL_select_db($dbname);
在生产系统上,您永远不应该显示错误,因为它可能会泄露您的代码和数据库的详细信息.相反,在PHP.ini或运行时关闭display_errors:
// In development and production,make sure all errors are reported error_reporting(E_ALL & E_STRICT); // In development show all errors on screen so you handle them as they occur ini_set('display_errors',1); // In production turn them off ini_set('display_errors',0);
实际上,使用@的错误抑制是PHP糟糕练习in this classic question.的第二大投票