我正在使用xml文件进行文件上传。我使用simplexml_load_file("files/sample.xml");
如果给出xml文件错误意味着,它将显示如下警告
Warning (2): simplexml_load_file() [http://php.net/function.simplexml-load-file]: files/sample.xml:8: parser error : Opening and ending tag mismatch:
Warning (2): simplexml_load_file() [http://php.net/function.simplexml-load-file]:
我使用try catch收到警告。我正在使用cakePHP
答案 0 :(得分:1)
您的脚本正在加载该文件。但是,该文件无法解析为XML。
要停止警告自动吐出到页面上(无论你是否尝试/捕获它都会这样做),你需要使用:
libxml_use_internal_errors(true);
在处理任何使用libxml的类之前。
来自PHP.net的libxml_use_internal_errors - 允许您禁用标准libxml错误并启用用户错误处理。
答案 1 :(得分:1)
如果您想尝试/捕获警告,则必须将警告“转换”为异常。
像这样设置全局错误句柄:
set_error_handler( 'error_handler' );
然后将警告转换为例外:
function error_handler( $errno, $errmsg, $filename, $linenum, $vars )
{
// error was suppressed with the @-operator
if ( 0 === error_reporting() )
return false;
if ( $errno !== E_ERROR )
throw new \ErrorException( sprintf('%s: %s', $errno, $errmsg ), 0, $errno, $filename, $linenum );
}