2010-03-29 72 views
1

我正在研究一个应用程序,通过POST接收XML数据,使用PHP脚本处理它,并返回一个XML响应。POST xml到php与apache2

我得到的XML与此PHP代码:

$requestStr = file_get_contents('php://input'); 
$requests = simplexml_load_string($requestStr); 

其使用nginx的作为服务器的基于Linux的产品硬件工作正常。

但是,为了测试我希望能够在我的MacBook Pro上运行它,所以我可以避免“构建映像,在产品上安装,重新启动产品,等待,测试更改”循环,同时进行有针对性的开发在这个XML处理器上。

我启用了“网络共享”,它启动了Apache,增加了一个重写规则,在我的开发源目录指向一个方便的URI和使用卷曲的请求发送到我的PHP脚本这样的:

curl -H "Content-Type:text/xml" -d @request.xml http://localhost/test/path/testscript 

“ testscript“是由PHP脚本处理的,但是当它读取"php:://input"时,我什么也没有 - 空字符串。

任何人都知道为什么在Linux下使用nginx而不使用Apache下的MacOS?

我google搜索stackoverlow.com无济于事。感谢任何答案。

更新: 我发现,至少在这个配置中,从php:// stdin读取将正常工作,而php://input不会。谁知道?

回答

0

不熟悉nginx的或者MacOS,但在FreeBSD/Apache的还有另一种方式,你可以尝试:

$ xml_in = $ GLOBALS [ “HTTP_RAW_POST_DATA”];抽出时间来回答我的问题

php_value always_populate_raw_post_data 1

HTH, 凯文

+0

感谢:

您还必须将其添加到的.htaccess。唉,那家公司已经不在了,现在这个问题还没有解决,至少对我而言。 – Berry 2011-02-04 05:00:55