如何捕捉"所有" php警告?

时间:2018-06-11 08:33:08

标签: php

当我使用scandir在没有系统权限的情况下扫描某个特定目录时,我从我的php获得了这个输出:

<br />
<b>Warning</b>:  scandir(/root): failed to open dir: Permission denied in <b>/var/blog/wordpress/ask.php</b> on line <b>17</b><br />
<br />
<b>Warning</b>:  scandir(): (errno 13): Permission denied in <b>/var/blog/wordpress/ask.php</b> on line <b>17</b><br />
  1. 我不知道为什么有两个类似的警告输出来自php。(我猜想一个是php&#39; s,另一个是shell&#39; s?Plz告诉我。)< / p>

  2. 我尝试捕获此警告(捕获linux errno)以通知我的浏览器客户端在完全权限下重新键入目录。

  3. 我的代码就像这样:

    set_error_handler("warning_handler");
    scandir ("/root");
    restore_error_handler();
    
    // this $errno is not scandir's $errno (Linux $errno)
    function warning_handler($errno, $errstr, $errfile, $errline, array $errcontext) {
        // error was suppressed with the @-operator
        if (0 === error_reporting()) {
            return false;
        }
        throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
    

    但是只会捕获一个警告(没有字符串的警告&#39; errno&#39;)。 所以现在我想知道是否有一种捕获所有警告的方法?还是其他任何黑客方法?

    我不是说我需要一种方法来尝试......发出警告。但在某些情况下,我无法使用that的方法完全发现警告。

0 个答案:

没有答案