AMH开源社区

AMH社区 - 开放自由有价值的社区

[求助帖] 疑似amh BUG反馈

zsx
铝牌会员
355.00 价值分

16,095 次阅读   11 张回复   zsx 发表于 2015-08-26 18:31:59
[i=s] 本帖最后由 zsx 于 2015-9-1 19:33 编辑 [/i]

这里是Z-BlogPHP的作者。

近日我们接到不少反馈报告,如:
http://bbs.zblogcn.com/forum.php?mod=viewthread&tid=90160&extra=
共同特征是使用了AMH 4.2。
经过各种调试,我们确定了出错代码,并予以修复。现进行反馈:
https://github.com/zblogcn/zblogphp/commit/81c4d2a470aad3520beff3e83d0477f5ff893a25

先是环境: CentOS 6 (2.6.32-358.6.2.el6.x86_64)、nginx1.4.7、PHP 5.3.27 x64。

问题现象:无法通过simplexml_load_file直接读取文件,必须使用file_get_contents + simplexml_load_string替代。

在我们的测试机上,文件结构如图:



因为amh对路径进行了虚拟,所以此时,在KODExplorer内查看,233.xml在/web/amh/下,如图



以下是我们测试用的文件内容:

233.xml内内容:
<?xml version="1.0" encoding="utf-8"?>
<hello>
<world>233</world>
</hello>
amh-test.php内容:
<?php
error_reporting(-1);
ini_set('display_errors', 1);

define('FILE_PATH', '/web/amh/233.xml');
$ret = array(
"simplexml_load_file" => @simplexml_load_file(FILE_PATH),
"readable" => is_readable(FILE_PATH),
"file_get_contents" => file_get_contents(FILE_PATH),
"simplexml_load_string" => simplexml_load_string(file_get_contents(FILE_PATH))
);
var_dump($ret);
返回:



@号去掉,得:
(2)E_WARNING : simplexml_load_file(): I/O warning : failed to load external entity "/web/amh/233.xml" (set_error_handler)


于是可以推断出结论,即simplexml_load_file无法直接加载文件。我们直接把真实物理路径交给simplexml_load_file,也是无法直接加载。
我们未继续向底层深究。根据错误现象,初步估计是amh部分的路径虚拟化未对simplexml组件生效,同时沙盒或类似功能对其进行了限制。
特此反馈,谢谢!

评价: 这个问题有价值吗?  没有 (0分)   有, 感谢 (0分)
2015-08-26 18:31:59 1

Captain
金牌会员
6928.40 价值分

妹子来看下~
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-26 19:10:45 2

诸葛御风
金牌会员
5687.50 价值分

A大来看一下
另外就是5.6.9的php pdo支持有问题啊
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-26 20:15:04 3

amysql
创始人
97298.70 价值分

测试在amchroot模块切换兼容模式是否正常?
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-27 16:19:24 4

amysql
创始人
97298.70 价值分

引用:
诸葛御风 发表于 2015-8-26 20:15
A大来看一下
另外就是5.6.9的php pdo支持有问题啊


具体是什么问题?
工单反馈下出错的信息。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-27 16:21:00 5

zsx
铝牌会员
355.00 价值分

引用:
amysql 发表于 2015-8-27 16:19
测试在amchroot模块切换兼容模式是否正常?


调整为兼容模式后,路径改变为/home/wwwroot/xxxxx/web/amh/233.xml。此时可以正常读取数据。

PS: 我头像改不了……改完后提交还是原样,Chrome 46 + 福州联通
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-27 17:16:30 6

amysql
创始人
97298.70 价值分

引用:
zsx 发表于 2015-8-27 17:16
调整为兼容模式后,路径改变为/home/wwwroot/xxxxx/web/amh/233.xml。此时可以正常读取数据。

PS: 我头 ...

那估计这个函数是调用了系统某些组件,在安全模式下被限制了。
amh前端有缓存,头像被缓存了吧,过些时间会自动更新。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-27 17:40:05 7

zsx
铝牌会员
355.00 价值分

引用:
amysql 发表于 2015-8-27 17:40
那估计这个函数是调用了系统某些组件,在安全模式下被限制了。


那请麻烦查一下吧,这个函数是PHP 5.1.2后默认打开的函数
http://php.net/manual/zh/function.simplexml-load-file.php
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-08-27 17:42:00 8

amysql
创始人
97298.70 价值分

引用:
zsx 发表于 2015-8-27 17:42
那请麻烦查一下吧,这个函数是PHP 5.1.2后默认打开的函数
http://php.net/manual/zh/function.simplexml- ...


不是函数开启的问题,是在AMH的安全模式下限制了。
可以切换兼容模式,
或用你上面的simplexml_load_string方案处理(推荐)。
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-09-01 12:49:39 9

zsx
铝牌会员
355.00 价值分

引用:
amysql 发表于 2015-9-1 12:49
不是函数开启的问题,是在AMH的安全模式下限制了。
可以切换兼容模式,
或用你上面的simplexml_load_stri ...


我知道是在amh的安全模式下被限制了……所以请麻烦查一下相关内容
因为这个函数实在是太常见了,我们无法保证第三方主题或插件不使用这个函数,以致再在这个函数上跌倒。
https://github.com/search?l=php&q=simplexml_load_file&type=Code&utf8=%E2%9C%93
评价: 这个答复有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2015-09-01 12:53:07 10
 1 2 >  (总2页)
AMH社区列表
旅客不可参与帖子, 请您先登录
用户服务中心