提问者:小点点

为什么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($\u POST)给了我数组()。如果我使用GET,它会工作,参数在$\u GET中。我的假设是,问题在环境变量中的某个地方。质询。length是浏览器给定的POST参数的大小


共1个答案

匿名用户

我让它工作了。我不得不将查询字符串作为php-cgi的stdin输入:

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

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