Я работаю над приложением, которое получает данные 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
- нет. Кто знал?