php - 当 $_SERVER['QUERY_STRING'] 包含 'a=foo' 时,为什么不会填充 $_GET['a']?
问题描述
使用这个 php 脚本,通过 nginx 下的 fastcgi 调用。不使用特定于 php 的 fastcgi 模块,只是像任何其他 unix 可执行文件一样调用它:
#!/usr/bin/php
<?php
echo "HTTP/1.1 200 OK\r\n\r\n";
echo 'Hello world'; echo "\n";
echo $_GET['a']; echo "\n";
echo $_SERVER['QUERY_STRING']; echo "\n";
echo $_SERVER['REQUEST_URI'];
echo "\n_GET\n";
while (list($var,$value) = each ($_GET)) {
echo "$var => $value <br />\n";
}
?>
api/example
该脚本在文档根目录下调用。我发送这个请求:
GET /api/example?a=foo HTTP/1.1
并得到这个回应:
Hello world
a=foo
/api/example?a=foo
_GET
IE。php 已按预期进行初始化$_SERVER['QUERY_STRING']
——$_SERVER['REQUEST_URI']
这表明参数正在通过 nginx/fastcgi 层传递——但$_GET['a']
仍未初始化,实际上$_GET
关联数组完全为空?为什么?
我正在运行 PHP 5.3.29。我将request_order
php.ini 调整为ESGP
(从默认值GP
)以尝试修复此问题,但我认为这无关紧要——除此之外,它是一个标准配置。
解决方案
Get 用于 http 样式的请求,这看起来是作为 cli 运行的。如果要使用 cli 传递参数,请查看 $argv
推荐阅读
- c# - 如何使用 C# 将自定义属性添加到 Excel 文档?
- java - 如何在 Java/Kotlin 中使用新的 StateRestorationPolicy?
- javascript - Sequelize:在表示两个其他模型之间的关联表的模型中使用包含
- flutter - 颤振中的HTML5等效项
- django - 使用 nginx 在服务器上提供 django 的静态文件的问题
- node.js - 在函数中使用 Firestore 集合 get() 返回类型
- vba - 如何在 PowerPoint 2016 中随着链接幻灯片的变化动态定义每个超链接
- ios - 购买订阅后 iOS 应用程序在启动时崩溃,但只有在发布到 AppStore 时,TestFlight 才能正常工作
- ios - Swift 和 UDP 套接字数据包发送两次
- python - 关于Python中while循环中for循环的问题