Я пытаюсь создать веб-сервер, обслуживающий сценарии PHP. В настоящее время он работает следующим образом:
php index.php
php
из STDOUT и возвращает его клиентуВсе это работает, за исключением того, что параметры не передаются в сценарий PHP, потому что:
var_dump($_GET);
возвращает:
массив (0) {}
Как делать $_GET
параметры передаются в двоичный файл PHP при его вызове?
Какой двоичный файл PHP вы используете? CLI или CGI? Я подозреваю, тебе нужен Версия CGI двоичного файла для PHP для правильной обработки, принять переменные среды и данные POST, если вы их передадите.
В php-cgi
binary реализует интерфейс CGI, который позволяет передавать параметры в командной строке:
php-cgi -f index.php left=1058 right=1067 class=A language=English
Которые попадают в $_GET
:
Array
(
[left] => 1058
[right] => 1067
[class] => A
[language] => English
)
Вы можете узнать, как CGI работает, поэтому вы можете реализовать это на своем веб-сервере.
Ссылка: RFC3875
В соответствии с Википедия, ответ - установить QUERY_STRING
переменная окружения:
QUERY_STRING='user=foo&pass=bar&left=1234' php-cgi index.php
или отдельными шагами:
export QUERY_STRING='user=foo&pass=bar&left=1234'
php-cgi index.php
Это работает, если вы используете php-cgi
команда, потому что это часть спецификации CGI. Обычный php
команда игнорирует эту переменную, но ваш сценарий может ее использовать.
Если вы передадите php script.php test = asdf
$result = parse_args($argv,$argc,$help);
print_r($result);
Если вы передаете его в STDIN, вам нужно будет прочитать STDIN и самостоятельно проанализировать заголовки. REQUEST_URI будет содержать нужные вам данные, и вы можете их передать.