Nat*_*man 5 php parameters cgi http query-string
我正在开发一个调用 PHP 二进制文件(通过 CGI)来处理脚本的网络服务器。
这是问题所在:
PHP 脚本没有选择命令行参数。例如,如果客户端请求path/to/file.php?test=value,则$_GET数组为空。
我试过在环境变量 ( QUERY_STRING) 中传递参数,但它们仍然没有显示出来。
如何将查询字符串参数传递给 PHP 应用程序?
你说的是命令行参数还是$_GET参数?那些不一样。
使用网络浏览器时,$_GET使用。但是,如果您要传递诸如 之类的命令行参数/path/to/file.php arg1 arg2,则必须使用$argv(并$argc包含元素的长度)。
$argv[0]始终包含正在运行的文件,在本例中为/path/to/file.php.
$argv[1]就是arg1在这种情况下,和$argv[2]是arg2。所以$argc包含3。
有用的资源:
PHP 有多种 SAPI。其中之一是 cli SAPI,这显然是您正在使用的,cli SAPI 不会填充 $_GET、$_POST ... 因为它用于命令行脚本。
在您的情况下,您需要 PHP cgi SAPI。(例如,你需要在你的shebangphp中用php-cgi[1]替换)
[1] 在大多数发行版中,它被称为php-cgi,如果您自己编译 PHP,则需要启用 cgi。