代码之家  ›  专栏  ›  技术社区  ›  Nathan Osman

如何将POST数据传递给PHP-CGI?

  •  6
  • Nathan Osman  · 技术社区  · 14 年前

    更新:

    在绝望中,我在一个空壳里做了以下事情:

    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 var_dump($_POST); ?>
    

    php-cgi 二元的。然而,事情并没有那么顺利。这个 php-cgi 二进制文件正确处理GET请求。在发布请求时 数组是空的,即使在发布内容时也是空的。

    我已经检查了传入 php-cgi Content-type: application/x-www-form-urlencoded 头球。

    是什么让 php-cgi 看到请求中包含POST数据的二进制文件?


    我在进步,我从 PHP source code :

    (我不知道从何处调用此函数。)


    读完下面的答案后,我试着:

    <?php
    
    var_dump($HTTP_RAW_POST_DATA);
    
    ?>
    

    NULL
    

    …表明这里有什么更奇怪的东西在工作。


    我越来越近了。。。我发现这个函数在 /main/php_content_types.c :

    SAPI-SAPI-SAPI-POST-READER-FUNC(php-default-POST-READER)

    3 回复  |  直到 14 年前
        1
  •  8
  •   Nathan Osman    14 年前

    最后 明白了:

    CONTENT_LENGTH 需要设置环境变量。

    添加:

    CONTENT_LENGTH=6
    export CONTENT_LENGTH
    

        2
  •  4
  •   I need help    14 年前

    你说过你的系统确实很好。只需要为文章设置内容长度

    http://graphcomp.com/info/specs/cgi11.html 这个lib.ru/WEBMASTER/cgi1_1spec/interface.html

    使请求正常工作所需的最小环境变量是什么?

        3
  •  0
  •   Sasha    14 年前