2016-09-14 63 views
0

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

我没有经验的PHP,所以我很难找出出了什么问题。我在网上检查器中检查了文件template.xml中的错误,但没有发现任何错误。我检查了文件路径是否正确,但我想知道/dir/dir/dir/template.xml的格式是否有误。我见过的这个问题的所有例子都处理了一个url而不是本地文件。

的准确代码行是:

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

,我已经尝试过将它分解,以确保模具()是没有问题的。

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

编辑:我终于能够得到一个错误,告诉我发生了什么。问题是:“未捕获的错误:调用未定义的函数simplexml_load_file()...”因此,出于某种原因,即使在NetBeans上,我也不知道在哪里可以找到该文件,所以我能够确切地知道它在哪里声明。接下来我将研究这一问题。

编辑:原来,这是一个常见的问题。出于某种原因,当更新到php7.0时,未安装SimpleXML(这是该函数所在的扩展名)。我发现这里:PHP 7 simpleXML 但是,当我这样做最初“php -m”显示SimpleXML被列为启用,但是当我重新启动apache2 SimpleXML然后消失。有谁知道为什么一个PHP模块会在重新启动时消失吗?

+0

我今天在服务器上使用了一个绝对的文件路径,在PHP 7下,它的工作方式和预期一样,所以不应该成为问题。使用'is_file($ TemplateXml)'检查脚本是否可以找到该文件? –

+0

返回1.因此它可以找到该文件。这是一个好的开始。 – khm

+0

你有错误报告和显示错误吗?检查日志文件的任何线索? –

回答

0

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

相关问题