$_SERVER['argv'] 带有 HTTP GET 和 CLI 问题
我正在尝试编写一个脚本来获取一些在线数据;脚本应该通过 cron 作业或 php cli 并使用标准 GET HTTP 请求来调用。正如 PHP 网站 $_SERVER['argv']
上所述应该满足我的需求:
传递给脚本的参数数组。当脚本运行在 命令行,这提供了对命令行的 C 风格访问 参数。当通过 GET 方法调用时,这将包含 查询字符串。
但是我无法让它与标准 HTTP GET 请求一起工作。 $_SERVER['argv']
未设置。我缺少什么?
<?php
// jobs/fetch.php
var_dump($_SERVER['argv']);
?>
CLI 输出 php jobs/fetch.php -a -bhello
:
array(3) {
[0]=>
string(14) "jobs/fetch.php"
[1]=>
string(2) "-a"
[2]=>
string(7) "-bhello"
}
GET 输出 jobs/fetch.php?a=&b =你好
:
注意:jobs/fetch.php 中未定义索引:argv。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
手册没有很好地说明这一点,但是,如果你想要
$_SERVER['argc']
,$_SERVER['argv']
,$argc
,$argv
当你不是在CLI
模式下运行时被注册,那么php.ini
值register_argc_argv 需要在 php.ini 中启用(默认情况下关闭[出于性能原因])。您可以执行以下操作来获取
argv
,或根据脚本的运行方式查询字符串参数:以下是
php.ini
中的一些详细信息:另请参阅 http://www.php.net/manual/en/reserved.variables.argv.php 和 parse_str()。
The manual didn't state this very well, but, if you want
$_SERVER['argc']
,$_SERVER['argv']
,$argc
,$argv
to be registered when you are not running inCLI
mode, then thephp.ini
value register_argc_argv needs to be enabled in php.ini (off by default [for performance reasons]).You could do the following to get
argv
, or query string args depending on how the script is running:Here are some details from
php.ini
:See also http://www.php.net/manual/en/reserved.variables.argv.php and parse_str().
您必须使用
$_GET
或$_SERVER['argv']
,具体取决于脚本的调用方式。两者均不使用任何一种。例如:
You will have to use
$_GET
or$_SERVER['argv']
depending on how your script is called. Neither one is used for both.For example: