【问题标题】:error_reporting(0); in a function错误报告(0);在一个函数中
【发布时间】:2015-09-02 00:30:08
【问题描述】:

我正在使用试图学习的类和函数,并且正在执行 fsockopen 以检查服务器是否在线。当我直接从页面执行此操作(不调用该函数)时,一切都很好。我试图仅为特定函数关闭错误报告。 编辑:我也尝试将 error_reporting 直接添加到函数中,但也没有用。

class server
{

public function __construct() {
    global $servhost;
    global $gameport;
    global $loginport;
    $this->fp = fsockopen($servhost, $gameport, $errno, $errstr, 5);
    $this->er = error_reporting(0);

                              }

function servstatus()
{
    // tried this echo $this->er;
    // tried this $this->er;
    // tried this error_reporting(0);

    if ($this->fp) {

         echo "Server Online";

         fclose($this->fp);

        } else {

           echo "Server Offline";

           fclose($this->fp);

               }

                     }
}

【问题讨论】:

  • 投反对票的人能否解释一下这篇文章为什么没有显示出研究成果、不清楚或没有用处?

标签: php


【解决方案1】:

您可以使用 @ 来抑制函数调用或表达式的错误报告。

例如$status = @servstatus(); 或$this->fp = @fsockopen($servhost, $gameport, $errno, $errstr, 5);

我建议您尝试找到一种更好的方法来处理错误或警告,而不是仅仅忽略它。抑制应该只在某些情况下使用,并且在调试时可能会导致问题,因此应谨慎使用。

【讨论】:

  • 有什么更好的方法?你能为我指出正确的方向吗?我认为只要 fsockopen 无法连接,错误就会一直出现?
  • 您收到什么错误?根据手册,只有在主机名不正确时才会发出警告。
  • 这只是一个警告,但 @ 确实将其关闭。警告是 (No connection could be made because the target machine actively refused it) 但如果服务器在线,它确实有效。
  • 那么可能不是一种解决方法,在这种情况下抑制可能很好。请小心使用抑制,尝试调试时会导致很多问题。
  • 另外,我的回显不起作用有什么原因吗?它不显示任何文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
相关资源
最近更新 更多