使用的语言:PHP版本:5.6
我正在尝试使用以下功能将文件上传到服务器:
move_uploaded_file($source,$destination);
[由于任何原因,文件上传失败
它只是发出警告,并继续执行代码的其他部分。但是我想捕获该警告,并在警告的名称引起任何警告时更改程序的流程,以便抛出适当的异常。
我当前正在使用try{}catch(){}
块上载文件,但未引发警告异常。
已编辑找到了...
move_uploaded_file($source,$destination);
根据文件上传的状态返回true或false。但这并没有说明原因。怎么知道的?
我想set_error_handler()
是正确的选择。确保您仔细阅读了文档。
https://www.php.net/manual/en/function.set-error-handler.php。
首先,您需要一个函数(或公共类方法)来处理错误。示例:
function error_handler($code, $text, $file, $line) {
echo sprintf('code: %s, text: %s, file: %s, line: %s', $code, $text, $file, $line );
return false; // continue with PHPs error handling
}
第二,在您的init / bootstrap代码中的某处调用set_error_handler
。指定您的error_handler方法并设置要通知您的情况的适当标志。
$flags = E_ALL & ~(E_STRICT | E_NOTICE);
set_error_handler('error_handler', $flags);
error_reporting($flags);
警告:如果您打算捕获内存不足之类的错误,则代码应准备使用尽可能少的内存。同样,资源可能不再可用(例如数据库连接或文件句柄)。
hth