I’m trying to write down a script to fetch some online data; script should be invoked either by a cron job or php cli and with standard GET HTTP request. As stated on PHP website $_SERVER['argv'] should fit my needs:
Array of arguments passed to the script. When the script is run on the
command line, this gives C-style access to the command line
parameters. When called via the GET method, this will contain the
query string.
However i can’t get it to work with standard HTTP GET request. $_SERVER['argv'] is not setted. What i’m missing?
<?php
// jobs/fetch.php
var_dump($_SERVER['argv']);
?>
CLI output php jobs/fetch.php -a -bhello:
array(3) {
[0]=>
string(14) "jobs/fetch.php"
[1]=>
string(2) "-a"
[2]=>
string(7) "-bhello"
}
GET output jobs/fetch.php?a=&b=hello:
Notice: Undefined index: argv in jobs/fetch.php.
The manual didn’t state this very well, but, if you want
$_SERVER['argc'],$_SERVER['argv'],$argc,$argvto be registered when you are not running inCLImode, then thephp.inivalue 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().