Как передать файл в PHP CLI? - PullRequest
2 голосов
/ 22 сентября 2009

У меня есть PHP-скрипт с именем «scipt» и текстовый файл с именем «data.txt». Прямо сейчас я могу выполнить скрипт, но тогда мне нужно ввести «data.txt». Есть ли способ передать data.txt в качестве параметра «скрипту», чтобы я мог запустить эту вещь в одной строке автоматически?

Прямо сейчас я печатаю:

php script {enter} // script runs and waits for me to type filename
data.txt {enter}
... executes

В идеале это будет выглядеть так:

php script data.txt {enter}
...executes

Я делаю все это из командной строки PHP. Ура:)

Ответы [ 4 ]

3 голосов
/ 22 сентября 2009
 mscharley@S04:~$ cat test.php
<?php
var_dump($_SERVER['argc']);
var_dump($_SERVER['argv']);
?>
 mscharley@S04:~$ php test.php foo bar
int(3)
array(3) {
  [0]=>
  string(8) "test.php"
  [1]=>
  string(3) "foo"
  [2]=>
  string(3) "bar"
}
 mscharley@S04:~$
1 голос
/ 22 сентября 2009

Аргументы к вашему сценарию будут доступны в $ argv

0 голосов
/ 22 сентября 2009

Если вам действительно нужен файл, вы можете получить имя файла с помощью переменной $ argv . Это позволит вам запустить его как

php script data.txt

Тогда «data.txt» будет $ argv 1 ($ argv [0] - это само имя скрипта).

Если вам на самом деле не нужен файл, а только его содержимое. Вы можете обрабатывать стандартный ввод (STDIN), используя любую из функций обычного чтения потока ( stream_get_contents () , fread () и т. Д.) Это позволяет вам направлять стандартный ввод следующим образом:

php script << data.txt

Это общая парадигма для * утилит в стиле nix.

0 голосов
/ 22 сентября 2009

или $_SERVER['argv'] (что не требует включения register_globals) - однако оба решения ДОЛЖНЫ включать register_argc_argv. Подробнее см. в документации .

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