1. 云栖社区>
  2. PHP教程>
  3. 正文

ThinkPHP2 Xml编译出错,缓存生成失败,请刷新页面 问题

作者:用户 来源:互联网 时间:2017-11-30 10:24:53

xml问题编译缓存页面出错刷新失败生成ThinkPHP2

ThinkPHP2 Xml编译出错,缓存生成失败,请刷新页面 问题 - 摘要: 本文讲的是ThinkPHP2 Xml编译出错,缓存生成失败,请刷新页面 问题,前言公司拿到的团购网站,其中后台是ThinkPHP2写的。 问题使用过程中,发现一个问题: 在删除`runtime`缓存目录下的`~runtime.php`和`~app.php`两个文件之后,虽然该目录下仍然会再次生成,但是到后台会发现提示

前言

公司拿到的团购网站,其中后台是ThinkPHP2写的。


问题

使用过程中,发现一个问题:


在删除`runtime`缓存目录下的`~runtime.php`和`~app.php`两个文件之后,虽然该目录下仍然会再次生成,但是到后台会发现提示“Xml编译出错,缓存生成失败,请刷新页面。”。原因

经过调试发现,原因在于/site/admin/ThinkPHP/Lib/Think/Template/TagLib.class.php文件110行simplexml_load_file()方法读不到xml文件数据,进而无法将xml转为对象,所以报错。


解决

注释该行,采用SimpleXMLElement获取,源码如下:


$file = file_get_contents($this->xml);
$xml_result = new SimpleXMLElement($file);//$xml_result = simplexml_load_file($this->xml);
if($xml_result)
{
$array = (array)($xml_result);
}
else
{
header("Content-Type:text/html; charset=utf-8");
echo "Xml编译出错,缓存生成失败,请刷新页面。";exit;
}
备注

之前曾经检查过simplexml_load_file()函数是否被禁用等,均为发现问题。最终无奈,只能以SimpleXMLElement代替,如果有发现根本原因的,欢迎提出来。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索xml , 问题 , 编译 , 缓存 , 页面 , 出错 , 刷新 , 失败 , 生成 ThinkPHP2 ,以便于您获取更多的相关知识。