为什么 PHP 不使用传递的参数填充 $_POST?



我用NodeJS用JavaScript编写了一个简单的web服务器。我有一个问题,PHP没有用传递的参数填充$_POST。我已经实现的是,$_GET是用传递的参数填充的。

process.env["GATEWAY_INTERFACE"] = "CGI/1.1";
process.env["SCRIPT_FILENAME"] = path.resolve(resource);
process.env["REQUEST_METHOD"] = request[0];
process.env["REDIRECT_STATUS"] = 200;
process.env["QUERY_STRING"] = queryString;
process.env["CONTENT_LENGTH"] = queryString.length;
process.env["CONTENT_TYPE"] = "application/x-www-form-urlencoded";
content = execSync(phpPath +"php-cgi", process.env);

但是print_r($_POST(给了我Array((。如果我使用GET,它可以工作,并且参数在$_GET中。我的假设是,问题出在环境变量中。queryString.length是浏览器给出的POST参数的大小

我让它工作起来了。我不得不将查询字符串作为php-cgi:的stdin输入进行管道传输

content = execSync(phpPath +"php-cgi", { env: process.env, input: queryString });

这只适用于POST,这就是为什么我现在检查POST和GET,并相应地设置方法

最新更新