在 PHP 中使用 SimpleXml 函数时,XML 文件内容未显示在 apache2 localhost 上

Posted

技术标签:

【中文标题】在 PHP 中使用 SimpleXml 函数时,XML 文件内容未显示在 apache2 localhost 上【英文标题】:XML file contents not showing on apache2 localhost when using SimpleXml function in PHP 【发布时间】:2018-07-07 17:31:35 【问题描述】:
<?php
$bookxml =simplexml_load_file("book.xml");

print_r($bookxml);  
echo"Display this";

?>

xml文件

<xml version="1.0" encoding="UTF-8">
<book>
    <bookcode>COMPUTER</bookcode>
    <bookname>LEARN PHP</bookname>
    <bookauthor>Balguruswamy</bookauthor>
    <publisher>Arihant</publisher>
    <price>645.50</price>
</book>
<book>
    <bookcode>Maths</bookcode>
    <bookname>Solve Trig</bookname>
    <bookauthor>A.B.C</bookauthor>
    <publisher>TM</publisher>
    <price>150.42</price>
</book>
<book>
    <bookcode>English</bookcode>
    <bookname>Prose</bookname>
    <bookauthor>D .E.EF</bookauthor>
    <publisher>Vision</publisher>
    <price>64.65</price>
</book>
<book>
    <bookcode>COMPUTER</bookcode>
    <bookname>LEARN JAVA</bookname>
    <bookauthor>Balguruswamy</bookauthor>
    <publisher>Penguin</publisher>
    <price>424.9</price>
</book>


当我在终端中使用 php filename.php 运行 php 脚本时,我可以看到 xml 文件,但是当我尝试从浏览器上的 apache localhost 执行时看不到它。我该怎么办?

编辑:

当我打开 apache2 的错误日志时,我看到了这个。

[2018 年 1 月 28 日星期日 10:35:16.301835] [mpm_event:notice] [pid 9407:tid 140581351434112] AH00489:已配置 Apache/2.4.18 (Ubuntu) -- 恢复正常运营 [Sun Jan 28 10:35:16.301914 2018] [核心:通知] [pid 9407:tid 140581351434112] AH00094:命令行: '/usr/sbin/apache2' [2018 年 1 月 28 日星期日 10:47:21.326245] [mpm_event:notice] [pid 9407:tid 140581351434112] AH00491: 抓到 SIGTERM,正在关闭 [Sun Jan 28 10:47:22.379645 2018] [mpm_event:notice] [pid 10070:tid 139652613879680] AH00489: Apache/2.4.18 (Ubuntu) 已配置 -- 恢复正常操作 [Sun 2018 年 1 月 28 日 10:47:22.379716] [core:notice] [pid 10070:tid 139652613879680] AH00094:命令行:'/usr/sbin/apache2' [Sun Jan 28 10:47:25.835120 2018] [mpm_event:notice] [pid 10070:tid 139652613879680] AH00491:捕获 SIGTERM,正在关闭 [Sun Jan 28 10:47:26.887422 2018] [mpm_event:notice] [pid 10176:tid 140391800403840] AH00489:已配置 Apache/2.4.18 (Ubuntu) -- 恢复正常运营 [Sun Jan 28 10:47:26.887537 2018] [核心:通知] [pid 10176:tid 140391800403840] AH00094:命令行: '/usr/sbin/apache2' [2018 年 1 月 28 日星期日 10:47:30.516640] [authz_core:error] [pid 10179:tid 140391718758144] [客户端 127.0.0.1:49064] AH01630:客户端被服务器配置拒绝:/home/pushkarrao/Work/apachetrue/ [Sun Jan 28 10:47:30.631338 2018] [authz_core:error] [pid 10179:tid 140391701972736] [客户端 127.0.0.1:49064] AH01630:客户端被服务器配置拒绝:/home/pushkarrao/Work/apachetrue/favicon.ico [1 月 28 日星期日 10:47:30.794247 2018] [authz_core:error] [pid 10179:tid 140391710365440] [客户端 127.0.0.1:49064] AH01630:客户端被拒绝 服务器配置:/home/pushkarrao/Work/apachetrue/favicon.ico [2018 年 1 月 28 日星期日 10:53:03.602646] [mpm_event:notice] [pid 10176:tid 140391800403840] AH00491:捕获 SIGTERM,正在关闭 [Sun Jan 28 10:53:04.686297 2018] [mpm_event:notice] [pid 10534:tid 139701054691200] AH00489:已配置 Apache/2.4.18 (Ubuntu) -- 恢复正常运营 [Sun Jan 28 10:53:04.686390 2018] [核心:通知] [pid 10534:tid 139701054691200] AH00094:命令行: '/usr/sbin/apache2' [2018 年 1 月 28 日星期日 19:41:28.732489] [mpm_event:notice] [pid 10534:tid 139701054691200] AH00491: 抓到 SIGTERM,正在关闭 [Sun Jan 28 19:41:29.794682 2018] [mpm_event:notice] [pid 13440:tid 139628059764608] AH00489: Apache/2.4.18 (Ubuntu) 已配置 -- 恢复正常操作 [Sun 2018 年 1 月 28 日 19:41:29.794753] [核心:通知] [pid 13440:tid 139628059764608] AH00094:命令行:'/usr/sbin/apache2'

【问题讨论】:

如果您没有看到“显示这个”,那么您的脚本可能会崩溃。首先要做的是检查您的 http 服务器错误日志文件,这是 php 记录问题的地方。它说什么?由于路径问题,很可能是“找不到文件”... 请向问题本身添加附加信息,而不是在 cmets 中。您的问题下方有一个edit 链接,使用它 好吧,您可以在查看该日志时告诉自己,各种重启,但没有任何相关性。 另一个猜测:也许一切正常,除了您输出的实际 xml 无法由 html 显示程序(浏览器)显示?检查您加载到浏览器中的页面源代码。 是的。那么可能是什么问题? 【参考方案1】:

我认为您的 xml 结构不正确:

应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<books>
 <book>
    <bookcode>COMPUTER</bookcode>
    <bookname>LEARN PHP</bookname>
    <bookauthor>Balguruswamy</bookauthor>
    <publisher>Arihant</publisher>
    <price>645.50</price>
</book>
<book>
    <bookcode>Maths</bookcode>
    <bookname>Solve Trig</bookname>
    <bookauthor>A.B.C</bookauthor>
    <publisher>TM</publisher>
    <price>150.42</price>
</book>
<book>
    <bookcode>English</bookcode>
    <bookname>Prose</bookname>
    <bookauthor>D .E.EF</bookauthor>
    <publisher>Vision</publisher>
    <price>64.65</price>
</book>
<book>
    <bookcode>COMPUTER</bookcode>
    <bookname>LEARN JAVA</bookname>
    <bookauthor>Balguruswamy</bookauthor>
    <publisher>Penguin</publisher>
    <price>424.9</price>
</book>
</books>

获取 xml 元素的 PHP 代码:

<?php
     $bookxml =simplexml_load_file("book.xml");
     echo '<pre>';
     print_r($bookxml);
?>

【讨论】:

以上是关于在 PHP 中使用 SimpleXml 函数时,XML 文件内容未显示在 apache2 localhost 上的主要内容,如果未能解决你的问题,请参考以下文章

PHP 5 SimpleXML 函数

PHP 5 SimpleXML 函数

使用来自子元素的数据在 php 中使用 simplexml 选择其他元素中的数据

使用 $variable 作为索引取消设置 PHP SIMpleXML 节点

PHP SimpleXML:提要修改

[PHP] xml转对象函数simplexml_load_string