POST XML для PHP с Apache2 - PullRequest
       5

POST XML для PHP с Apache2

1 голос
/ 29 марта 2010

Я работаю над приложением, которое получает данные XML через POST, обрабатывает их с помощью сценария PHP и возвращает ответ XML.

Я получаю XML с этим кодом PHP:

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

, который отлично работает на оборудовании Linux-продукта с использованием nginx в качестве сервера.

Однако для тестирования я хотел бы иметь возможность запускать его на своем MacBook Pro, чтобы избежать цикла «сборка образа, установка на продукт, перезагрузка продукта, ожидание, изменение теста», пока я занимаюсь целевой разработкой этот процессор XML.

Я включил «общий доступ к сети», который запускает Apache, добавил правило перезаписи, чтобы указать удобный URI в моем исходном каталоге разработки, и использовал curl для отправки запроса в мой PHP-скрипт следующим образом:

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

"тестовый скрипт" прекрасно обрабатывается PHP-скриптом, но когда он переходит к чтению "php:://input", я ничего не получаю - пустая строка.

Кто-нибудь знает, почему это работает под Linux с nginx, а не под MacOS с Apache?

Я гуглил и искал stackoverlow.com безрезультатно. Спасибо за любые ответы.

UPDATE: Я обнаружил, что по крайней мере в этой конфигурации чтение из php: // stdin будет работать нормально, а php://input - нет. Кто знал?

1 Ответ

0 голосов
/ 03 февраля 2011

Не знаком с nginx или MacOS, но с FreeBSD / Apache есть другой способ, которым вы можете попробовать:

$ xml_in = $ GLOBALS ["HTTP_RAW_POST_DATA"];

Вы также должны добавить это к .htaccess:

php_value always_populate_raw_post_data 1

НТН, Kevin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...