如何将文件传递到PHP CLI?

时间:2009-09-22 00:48:27

标签: php

我有一个名为“scipt”的PHP脚本和一个名为“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 个答案:

答案 0 :(得分:3)

 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 :(得分:1)

您的脚本的参数将在$argv

中提供

答案 2 :(得分:0)

$_SERVER['argv'](不需要register_globals开启) - 但是,这两种解决方案都需要启用register_argc_argv。有关详细信息,请参阅the documentation

答案 3 :(得分:0)

如果您确实需要该文件,可以使用$argv变量获取文件名。那将允许你像

一样运行它
php script data.txt

然后“data.txt”将是$ argv 1($ argv [0]是脚本名称本身)。

如果您实际上不需要该文件,只需要其内容。您可以使用任何常规流读取函数(stream_get_contents()fread()等)处理标准输入(STDIN)。这允许您像这样指导标准输入:

php script << data.txt

这是* nix风格实用程序的常见范例。