Apache2 ile php POST xml

1 Cevap php

Ben, POST aracılığıyla XML verilerini alan bir PHP dosyası ile işler ve bir XML yanıt verir bir uygulama üzerinde çalışıyorum.

Bu PHP kodu ile XML alıyorum:

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

hangi sunucu olarak nginx kullanan Linux tabanlı ürün donanım üzerinde çalışıyor.

Ancak, test için ben benim MacBook Pro üzerinde çalışabiliyor olmak istiyorum, bu yüzden bu XML işlemci üzerinde geliştirme hedefli yok iken ben ", imaj oluşturmak ürünü yüklemek, yeniden ürün, bekle testi değişim" döngü önleyebilirsiniz .

Ben, Apache başlatıldığında "web paylaşımı" etkin benim geliştirme kaynak dizininde uygun bir URI noktasına bir yeniden yazma kuralı eklendi ve böylece benim PHP komut dosyası için bir istek göndermek için kıvırın kullanılır:

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

"Testscript" PHP komut dosyası cezası ile ele alınır, ancak "php :: / / girdi" okumak için gittiğinde ben bir şey olsun - boş dize.

Bu Apache ile nginx değil MacOS altında birlikte Linux altında çalışmak neden kimse bir ipucu var mı?

Ben googled ve boşuna stackoverlow.com aradık. Herhangi bir cevap için teşekkürler.

UPDATE: I've discovered that at least in this configuration, reading from php://stdin will work fine, while php://input will not. Who knew?

1 Cevap

Nginx veya MacOS aşina değildir, ama FreeBSD / Apache ile deneyebilirsiniz başka bir yolu vardır:

$ Xml_in = $ GLOBALS ["HTTP_RAW_POST_DATA"];

. Ayrıca htaccess bu eklemeniz gerekir:

php_value always_populate_raw_post_data 1

HTH, Kevin