В руководстве не очень хорошо сказано это, но если вы хотите, чтобы $_SERVER['argc']
, $_SERVER['argv']
, $argc
, $argv
были зарегистрированы, когда вы не работаете в режиме CLI
, тогда php.ini
значение register_argc_argv необходимо включить в php.ini (по умолчанию отключено [по соображениям производительности]).
Чтобы получить argv
или аргументы строки запроса, можно сделать следующеев зависимости от того, как работает скрипт:
if (php_sapi_name() == 'cli') {
$args = $_SERVER['argv'];
} else {
parse_str($_SERVER['QUERY_STRING'], $args);
}
Вот некоторые подробности из php.ini
:
; This directive determines whether PHP registers $argv & $argc each time it
; runs. $argv contains an array of all the arguments passed to PHP when a script
; is invoked. $argc contains an integer representing the number of arguments
; that were passed when the script was invoked. These arrays are extremely
; useful when running scripts from the command line. When this directive is
; enabled, registering these variables consumes CPU cycles and memory each time
; a script is executed. For performance reasons, this feature should be disabled
; on production servers.
; Note: This directive is hardcoded to On for the CLI SAPI
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/register-argc-argv
См. также http://www.php.net/manual/en/reserved.variables.argv.php и parse_str ().