我在一个继承的网站上工作,只是将所有内容都切换到了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模块在重启时会消失?
所以我想通了!由于未安装SimpleXML,因此不会加载simplexml_load_file()。要安装它,我必须做“ apt-get install php7.0-xml”。我通过“ php -m”检查它是否已安装。它一直消失的原因是我没有正确地重新启动apache2服务器。它只有在我执行“ /etc/init.d/apache2 restart”然后执行“ poweroff”时才起作用。这样,当我重新启动VirtualBox计算机时,它仍会显示SimpleXML已安装。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句