【发布时间】:2010-10-29 23:29:44
【问题描述】:
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();
但是,我不喜欢它,因为它使用全局变量。有更清洁的解决方案的想法吗?
【问题讨论】:
-
Soulmerge 的回答是一个更好的选择,因为它可以告诉您错误而无需更换处理程序。
-
请注意,错误处理程序存储在 PHP 中的堆栈中,这意味着对 restore_error_handler() 的调用将恢复以前的错误处理程序,无论是内置处理程序还是其他自定义处理程序。所以临时用 set_error_handler() 替换错误处理程序没有任何损失。
标签: php error-reporting mkdir