SimpleXML 模块在重启时消失

SimpleXML module disappears on restart

我在继承的网站上工作,只是将所有内容切换到 php7。由于这个开关,我发现了很多错误。一个错误是函数 simplexml_load_file() 没有 returning 任何东西。我将一个变量传递给它,该变量已设置为我们服务器上的文件路径(即 /dir/dir/dir/template.xml)。但是当这个函数被调用时,它没有 return 任何值,既不是我们想要的对象,也不是表示它失败的 0。

我在 php 方面没有经验,所以我很难找出问题所在。我在在线检查器中检查了文件 template.xml 是否存在错误,发现了 none。我检查了文件路径是否正确,但我想知道 /dir/dir/dir/template.xml 的格式是否错误。我所见过的这个问题的所有示例都处理 url 而不是本地文件。

确切的代码行是:

 $xml = simplexml_load_file($TempleteXml) or die("Unable to load configuration data!");

而且我已经尝试将其分解以确保 die() 不是问题所在。

编辑:我发现代码中的另一个地方出现了这个问题。它是另一个文件,其中以完全相同的方式调用相同类型的文件。

编辑:我终于能够得到一个错误,告诉我发生了什么。问题是:"Uncaught Error: Call to undefined function simplexml_load_file()..." 所以出于某种原因它不知道在哪里可以找到该文件,即使在 NetBeans 上我能够准确地看到它的声明位置。接下来我将研究这一行的调查。

编辑:原来这是一个常见问题。出于某种原因,更新到 php7.0 时未安装 SimpleXML(这是此功能所在的扩展)。我在这里找到了: 但是当我最初这样做时 "php -m" 显示 SimpleXML 被列为已启用,但是当我重新启动 apache2 SimpleXML 然后消失。有谁知道为什么 php 模块会在重启时消失?

所以我想通了! simplexml_load_file() 无法加载,因为未安装 SimpleXML。要安装它,我必须做 "apt-get install php7.0-xml"。我通过 "php -m" 检查它现在是否已安装。 它一直消失的原因是我没有正确重启 apache2 服务器。它仅在我执行“/etc/init.d/apache2 重启”然后 "poweroff" 时有效。这样当我重新启动我的 VirtualBox 机器时,它仍然会显示 SimpleXML 正在安装。