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

Why doesn't PHP populate $_POST with the passed parameters?

我在 JavaScript 中使用 NodeJS 编写了一个简单的 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:

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

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