Не удается передать значения $_POST в php-cgi

Я пытаюсь разработать веб-сервер с поддержкой PHP, поэтому я провожу небольшие тесты с php-cgi, но не могу передать интерпретатору значения $_POST. Я уже читал эту тему, но ничего не смог сделать :(:

Мой источник:

export GATEWAY_INTERFACE="CGI/1.1"
export SCRIPT_FILENAME="/home/xzhttpd/htdocs/test.php"
export REQUEST_METHOD="POST"
export REDIRECT_STATUS=200
export SERVER_PROTOCOL="HTTP/1.1"
export REMOTE_HOST="127.0.0.1"
export CONTENT_LENGHT=3
export HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
export CONTENT_TYPE="application/x-www-form-urlencoded"
export BODY="t=1"

exec echo "$BODY" | /usr/bin/php-cgi

Я получил это:

Уведомление PHP: неопределенный индекс: t в /home/xzhttpd/htdocs/test.php в строке 1

Источник PHP:

<?php print $_POST["t"]; ?>

person alkz    schedule 12.12.2011    source источник
comment
полезный комментарий, поздравляю, мне удалось решить мою проблему благодаря вам   -  person alkz    schedule 12.12.2011
comment
Ошибка является ошибкой php, но вы не разместили код для php...   -  person Bot    schedule 12.12.2011
comment
возможный дубликат Как передать данные POST в PHP-CGI?   -  person mario    schedule 12.12.2011
comment
@ user665766 вы просите о бесплатной помощи, вы не должны быть так грубо саркастичны   -  person Damien Pirsy    schedule 12.12.2011


Ответы (2)


У вас CONTENT_LENGHT ошибка.

Должно быть CONTENT_LENGTH

person Naftali aka Neal    schedule 12.12.2011

Вам не хватает еще нескольких важных переменных среды CGI (лучше установить все из них), которые при отсутствии заставляют PHP игнорировать запрос и тело POST:

export SCRIPT_NAME="xy.php"
export REQUEST_URI="/xy.php"
export SERVER_NAME="example.com"
export SERVER_PROTOCOL="HTTP/1.1"

Это приведет к другому предупреждению PHP из-за REDIRECT_STATUS=. (Не помню, как это работает, вероятно, требуется больше псевдонимов REDIRECT_*, но можно просто отключить force-cgi-redirect в php.ini для тестирования.)

person mario    schedule 12.12.2011