更新:
绝望之下,我在shell中做了以下事情:
REDIRECT_STATUS=true
SCRIPT_FILENAME=/var/www/...
REQUEST_METHOD=POST
GATEWAY_INTERFACE=CGI/1.1
export REDIRECT_STATUS
export SCRIPT_FILENAME
export REQUEST_METHOD
export GATEWAY_INTERFACE
echo "test=1" | php-cgi
…并且仍然没有$_POST变量显示在此输出中:
我正在尝试创建一个与php-cgi二进制文件接口的小型Web服务器.然而,情况并不顺利. php-cgi二进制文件正确处理GET请求.当涉及POST请求时,$_POST数组为空,即使事情正在进行POST.
我已经检查了HTTP标头被输入到php-cgi二进制文件中,它们确实包含了POST数据和Content-type:application / x-www-form-urlencoded标头.
什么可以让php-cgi二进制文件看不到请求中包含的POST数据?
我正在取得进展,我从PHP source code挖出了一些东西:
468: static int sapi_cgi_read_post(char *buffer, uint count_bytes TSRMLS_DC)
(我不知道从哪里调用这个函数.)
看完下面的答案,我试过:
var_dump($HTTP_RAW_POST_DATA);
?>
……产生了输出:
NULL
……表明在这里工作的东西更奇怪.
SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader)
…它似乎是处理POST请求的代码.