在 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 中使用 simplexml 选择其他元素中的数据