Запустите php скрипт из командной строки с переменной - PullRequest
20 голосов
/ 10 июня 2009

Я хочу запустить скрипт PHP из командной строки, но я также хочу установить переменную для этого скрипта.

Версия браузера: script.php?var=3

Командная строка: php -f script.php (но как мне дать ей переменную, содержащую 3?)

Ответы [ 5 ]

35 голосов
/ 10 июня 2009

Сценарий:

<?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 из командной строки .

7 голосов
/ 10 июня 2009

Помимо argv (как упоминал Ionut), вы можете использовать переменные окружения:

например:.

var = 3 php -f test.php

В test.php:

$var = getenv("var");
6 голосов
/ 10 июня 2009

Если вы хотите сохранить именованные параметры почти как var = 3 & foo = bar (вместо позиционных параметров, предлагаемых $ argv ) getopt () может помочь вам.

4 голосов
/ 10 июня 2009

Помимо использования argc и argv , как указано Ionut G. Stan , вы также можете использовать модуль PEAR Console_Getopt который может анализировать параметры командной строки в стиле Unix. См. эту статью для получения дополнительной информации.

Кроме того, в Zend Framework есть аналогичные функциональные возможности в классе Zend_Console_Getopt .

3 голосов
/ 23 марта 2013

Многие решения помещают аргументы в переменные в соответствии с их порядком. Например,

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

дал мне ответ.

сент16 в 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').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...