当我使用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 />
我不知道为什么有两个类似的警告输出来自php。(我猜想一个是php&#39; s,另一个是shell&#39; s?Plz告诉我。)< / p>
我尝试捕获此警告(捕获linux errno)以通知我的浏览器客户端在完全权限下重新键入目录。
我的代码就像这样:
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的方法完全发现警告。