What does the @ character do in PHP?
Possible Duplicates:
Reference - What does this symbol mean in PHP?
What does @ mean in PHP?
我的代码中有一行如下所示:
@mysql_select_db($dbname)or die("错误:无法选择数据库");
它可以工作,但我想知道@是做什么的,为什么会在那里。
- 在我最近看到的一句名言中,"它阻止你发现你的程序出了什么问题"。我想是戈登…
- @Elyobo不认为是我,但里面有很多事实
- @戈登,那时候你应该保持安静,接受荣誉;)它就在这上面的某个地方,但我现在似乎找不到它了。
- @在这个复制品之前是伊格纳西奥·瓦兹奎兹·艾布拉姆斯的复制品。我记得我在参考文献中链接了它。)
- "@Gordon,你应该保持安静……"我觉得这个问题很有趣。
- @是的,但是我默认启用了尖叫;)
- @戈登,做得不错。@伊瑟,你刚才让我把咖啡弄洒了。
@符号抑制前面表达式的任何错误和注意事项。
请参阅以下参考:php错误控制运算符
PHP supports one error control
operator: the at sign (@). When
prepended to an expression in PHP, any
error messages that might be generated
by that expression will be ignored.
在这种情况下,@将禁止常规的PHP数据库连接错误(可能包含敏感信息)。如果出现连接错误,将执行"or die"部分,失败并显示一般错误消息。该行可能是从"快速和肮脏"示例复制的。
使用错误抑制操作符@被认为是错误的样式,特别是在缺少其他形式的错误处理时。这会使调试复杂化——在没有任何迹象表明发生了错误的情况下,如何才能发现错误?在生产系统中,最好将所有错误记录到一个文件中,并禁止在页面上呈现错误。您可以在php.ini文件中这样做,或者(如果您在共享主机上,并且不允许进行配置更改)使用以下代码。
1 2 3
| ini_set('display_errors', false);
ini_set('log_errors', true);
ini_set('error_log', '/var/log/apache/php-errors.log'); |
- @将禁止所有错误,而不仅仅是数据库连接错误。
- 谢谢,我已经编辑了我的答案来反映这一点。
它抑制所有错误输出。一般来说,除非你有充分的理由,否则你不应该使用它。我不知道为什么在您发布的示例中使用它,或者为什么使用die()。应捕获错误并进行相应的处理。选择可能会失败,原因有很多,有些可能是可恢复的。就像没有建立到数据库的连接。