2010-03-29 71 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