Mil*_*kov 20 php error-reporting mkdir
PHP的mkdir函数只返回true和false.问题是它何时返回false.
如果我在启用错误报告的情况下运行,我会在屏幕上看到错误消息.我还可以在Apache日志中看到错误消息.但我想抓住消息的文本并用它做其他事情(例如通过IM发送给我自己).我如何获得错误文本?
更新:遵循艾曼的想法,我来到这里:
function error_handler($errno, $errstr) {
global $last_error;
$last_error = $errstr;
}
set_error_handler('error_handler');
if (!mkdir('/somedir'))
echo "MKDIR failed, reason: $last_error\n";
restore_error_handler();
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢它,因为它使用全局变量.想要更清洁的解决方案吗?
sou*_*rge 55
您可以取消警告并使用error_get_last()
:
if (!@mkdir($dir)) {
$error = error_get_last();
echo $error['message'];
}
Run Code Online (Sandbox Code Playgroud)
Kaz*_*zar 16
您可以使用例外:
设置一些代码如下:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
Run Code Online (Sandbox Code Playgroud)
然后就是:
try {
mkdir('/somedir');
} catch(ErrorException $ex) {
echo "Error: " . $ex->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
那应该做你想要的.
如果你想保留php错误处理程序,那么在尝试catch块后,只需调用:
restore_error_handler()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32497 次 |
最近记录: |