Запустите PHP скрипт из командной строки с переменной
Я хочу запустить PHP script из командной строки, но я также хочу установить переменную для этого script.
Версия браузера: script.php?var=3
Командная строка: php -f script.php
(но как мне передать переменную, содержащую 3?)
Ответы
Ответ 1
Script:
<?php
// number of arguments passed to the script
var_dump($argc);
// the arguments as an array. first argument is always the script name
var_dump($argv);
Команда:
$ php -f test.php foo bar baz
int(4)
array(4) {
[0]=>
string(8) "test.php"
[1]=>
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(3) "baz"
}
Кроме того, посмотрите используя PHP из командной строки.
Ответ 2
Кроме argv (как упоминалось в Ionut), вы можете использовать переменные среды:
например:.
var = 3 php -f test.php
В test.php:
$var = getenv("var");
Ответ 3
Если вы хотите сохранить именованные параметры почти такими же, как var = 3 & foo = bar (вместо позиционных параметров, предлагаемых $argv) getopt() может помочь вам.
Ответ 4
Также, используя argc и argv, как указано Ionut G. Stan, вы также можете использовать модуль PEAR Console_Getopt, который может анализировать параметры командной строки в стиле unix. Подробнее см. в этой статье.
В качестве альтернативы аналогичная функциональность в Zend Framework в классе Zend_Console_Getopt.
Ответ 5
Множество решений помещает аргументы в переменные в соответствии с их порядком. Например,
myfile.php 5 7
поместит 5 в первую переменную и 7 в следующую переменную.
Мне нужны именованные аргументы:
myfile.php a=1 x=8
чтобы я мог использовать их как имена переменных в PHP-коде.
Ссылка, которую Ionuţ G. Stan дал в
http://www.php.net/manual/en/features.commandline.php
дал мне ответ.
sep16 в psu dot edu:
Вы можете легко проанализировать аргументы командной строки в переменной $_GET с помощью функции parse_str().
<?php
parse_str(implode('&', array_slice($argv, 1)), $_GET);
?>
Он ведет себя точно так, как вы ожидали бы с помощью cgi-php.
$ php -f somefile.php a=1 b[]=2 b[]=3
Это установит $_GET ['a'] в '1' и $_GET ['b'] в массив ('2', '3').