我正在继承一个网站,只是把一切都改成了php7。由于这个开关我发现了很多错误。一个错误是函数simplexml_load_file()没有返回任何内容。我传递了一个已设置为服务器上文件路径的变量(即/dir/dir/dir/template.xml)。但是当调用此函数时,它不会返回任何值,既不是我们想要的对象也不是0来表示它失败。
我没有PHP的经验,所以我很难搞清楚出了什么问题。我在文件template.xml中检查了在线检查器中的错误,但没有找到。我检查了文件路径是否正确,但我想知道/dir/dir/dir/template.xml的格式是否错误。我见过的所有这个问题的例子都是处理url而不是本地文件。
确切的代码行是:
$xml = simplexml_load_file($TempleteXml) or die("Unable to load configuration data!");
我已经尝试将其分解以确定die()不是问题。
编辑:我在代码中找到了发生此问题的另一个位置。这是另一个文件,其中以完全相同的方式调用相同类型的文件。
编辑:我终于得到了一个错误,告诉我发生了什么。问题是:“未捕获的错误:调用未定义的函数simplexml_load_file()...”因此,由于某种原因它不知道在哪里找到该文件,即使在NetBeans上我能够确切地看到它的声明位置。接下来我将研究这一问题。
编辑:事实证明这是一个常见问题。出于某种原因,当更新到php7.0时没有安装SimpleXML(这是该函数所在的扩展)。我发现了这里:PHP 7 simpleXML 但是当我这样做时,最初“php -m”显示SimpleXML被列为启用,但是当我重新启动apache2 SimpleXML然后消失。有谁知道为什么php模块会在重启时消失?
答案 0 :(得分:0)
所以我明白了! simplexml_load_file()不会加载,因为没有安装SimpleXML。要安装它,我必须做" apt-get install php7.0-xml"。我检查它现在是通过做#34; php -m"来安装的。 它不断消失的原因是我没有正确地重新启动apache2服务器。它只在我做的时候起作用" /etc/init.d/apache2 restart"然后" poweroff"。这样,当我重新启动我的VirtualBox机器时,它仍会显示SimpleXML已安装。