为啥 PHP 不使用传递的参数填充 $_POST?
Posted
技术标签:
【中文标题】为啥 PHP 不使用传递的参数填充 $_POST?【英文标题】:Why doesn't PHP populate $_POST with the passed parameters?为什么 PHP 不使用传递的参数填充 $_POST? 【发布时间】:2022-01-22 02:54:05 【问题描述】:我用 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 参数的大小
【问题讨论】:
【参考方案1】:我让它工作了。我不得不将查询字符串作为 php-cgi 的标准输入输入:
content = execSync(phpPath +"php-cgi", env: process.env, input: queryString );
这仅适用于 POST,这就是为什么我现在检查 POST 和 GET 并相应地设置方法
【讨论】:
以上是关于为啥 PHP 不使用传递的参数填充 $_POST?的主要内容,如果未能解决你的问题,请参考以下文章