可能重复:
Reference - What does this symbol mean in PHP?
What does @ mean in PHP?
我的代码中有一行看起来像这样:
@mysql_select_db($ dbname)或die(“错误:无法选择数据库”);
它有效,但我想知道@做了什么以及它为什么存在。
答案 0 :(得分:13)
@
符号会抑制其前面的表达式的任何错误和通知。
请参阅此参考:PHP Error Control Operators
PHP支持一个错误控件 operator:at符号(@)。什么时候 在PHP中添加任何表达式 可能生成的错误消息 通过该表达式将被忽略。
答案 1 :(得分:2)
在这种情况下,@
将抑制常规PHP数据库连接错误(可能包含敏感信息)。如果出现连接错误,将执行“或die”部分,但失败并显示一般错误消息。该行可能是从“快速而肮脏”的例子中复制而来的。
使用错误抑制运算符@
被视为错误样式,尤其是在缺少其他形式的错误处理时。它使调试复杂化 - 如何在没有任何迹象表明错误的情况下发现错误?在生产系统中,最好将所有错误记录到文件中,并禁止在页面上呈现错误。您可以使用以下代码在php.ini
文件中执行此操作,或者(如果您在共享主机上并且不允许进行配置更改)。
ini_set('display_errors', false);
ini_set('log_errors', true);
ini_set('error_log', '/var/log/apache/php-errors.log');
答案 2 :(得分:1)
它抑制所有错误输出。通常,除非有充分的理由,否则不应使用它。我不知道为什么在你发布的例子中使用它,或者为什么使用die()。应该捕获并相应地处理错误。选择可能由于多种原因而失败,一些可能是可恢复的。就像没有建立数据库的连接一样。