@字符在PHP中有什么作用?

时间:2010-12-16 11:13:20

标签: php

  

可能重复:
  Reference - What does this symbol mean in PHP?
  What does @ mean in PHP?

我的代码中有一行看起来像这样:

@mysql_select_db($ dbname)或die(“错误:无法选择数据库”);

它有效,但我想知道@做了什么以及它为什么存在。

3 个答案:

答案 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()。应该捕获并相应地处理错误。选择可能由于多种原因而失败,一些可能是可恢复的。就像没有建立数据库的连接一样。