Я пишу веб-сервер в C #, и я пытаюсь добавить поддержку PHP. У меня это в основном работает, но я не знаю, как передавать данные GET и POST в исполняемый файл PHP, когда я передаю ему файл. Я тестировал GET, так как я не получал запросы POST, обрабатываемые на сервере, и у меня есть строка аргументов, которые передаются отдельно, но я не знаю, как передать информацию в парсер php , Некоторые советы будут оценены.
Для GET: легкий способ (что я нашел):
php-cgi.exe <script-file-name> <parameter1>=<value1> <parameter2>=<value2> [...] <parameterN>=<valueN>
Более жесткий путь (через php-cgi и windows cli) будет:
SET "QUERY_STRING=<parameter1>=<value1>&<parameter2>=<value2>&[...]&<paramterN>=<valueN>" SET SCRIPT_NAME=<script-file-name> SET REQUEST_METHOD=GET SET REDIRECT_STATUS=0 php-cgi.exe
Я бы предположил, что был бы способ установить переменную среды через C # /. Net. После завершения работы php-cgi.exe переменные окружения должны быть отменены.
Дополнительная информация о переменных среды CGI, которые вы можете установить (и CGI в целом) на http://www.ietf.org/rfc/rfc3875.txt . Возможно, также будет полезной документация PHP $ _SERVER. Вопросы безопасности для запуска PHP как CGI также в документации PHP на php.net.
Вы знакомы с CGI ? Как правило, веб-серверы будут выполнять произвольные внешние программы.
Есть, безусловно, более современные альтернативы CGI, но (почти) каждый веб-сервер и внешняя программа сегодня будут поддерживать CGI.
Если вы находитесь в bash
или подобной оболочке, попробуйте следующее: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php
.
Здесь есть объяснение: http://stevedev.co.cc/php-curl-method-get-and-post/
Вы считали, что данные GET / POST передаются как STDIN в исполняемый файл PHP? т.е.
system ("echo" .GETOrPOSTData. "> foobar.php");