无法将$ _POST值传递给php-cgi

时间:2011-12-12 18:01:56

标签: php cgi webserver

我正在尝试开发一个支持PHP的Web服务器,所以我正在用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在第1行的/home/xzhttpd/htdocs/test.php中

PHP来源:

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

2 个答案:

答案 0 :(得分:3)

你错过了一些更重要的CGI环境变量(最好设置all of them),当缺席时让PHP忽略请求和POST正文:

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

由于REDIRECT_STATUS=,这将导致另一个PHP警告。 (不记得它是如何工作的,可能需要更多的REDIRECT_*别名,但是可以在php.ini中禁用force-cgi-redirect进行测试。)

答案 1 :(得分:3)

CONTENT_LENGHT拼写错误。

应为CONTENT_LENGTH

相关问题