您的位置:首页 > 编程语言 > PHP开发

命令行下运行php脚本

2015-08-24 15:24 405 查看
最近在维护一个网站后台,开发语言是php,看来要好好学一学这门语言了。 为了做一些简单的练习,都要开启webserver,有些大材小用,所以,就想直接在命令行下运行php脚本。 而且,既然php是一种脚本语言,一些日常用的脚本工具也可以直接用它来实现,权当练习了。 从网上搜了一些资料,整理如下:

注:以下示例运行于Mac OSX 10.10下。

基本运行方式

1. 让 PHP 运行指定文件。

     php my_script.php
     php -f  'my_script.php'

     以上两种方法(使用或不使用 -f 参数)都能够运行给定的 my_script.php 文件。
     指定的 PHP 脚本并非必须要以 .php 为扩展名,它们可以有任意的文件名和扩展名。

2. 在命令行直接运行 PHP 代码。

     php -r 'print_r(get_defined_constants());'

3. 通过标准输入(stdin)提供需要运行的 PHP 代码。
 
     $ some_application | some_filter | php | sort -u >final_output.txt

向脚本传送参数

     传递给脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称(当 PHP代码来自标准输入获直接用 -r 参数以命令行方式运行时,该名称为“-”)。另外,全局变量 $argc 存有 $argv 数组中成员变量的个数。

     1. php -r 'var_dump($argv);'
          输出:
           array(1) {
                 [0] =>
                 string(1) "-"
          }

     2. php -r 'var_dump($argv);’ h
          输出:
           array(1) {
                 [0] =>
                 string(1) "-"
                 [1] =>
                 string(1) "h"
          }

     3. php -r 'var_dump($argv);' -- -h
          输出:
           array(2) {
                 [0] =>
                 string(1) "-"
                 [1] =>
                 string(2) "-h"
          }

     4. php -r 'var_dump($argv);' -h
          输出: (该命令将不会运行 PHP 代码,而只显示 PHP 命令行模式的使用说明)
           Usage: php [options] [-f] <file> [--] [args...]
                  php [options] -r <code> [--] [args...]

     请注意第三个例子和第四个例子的区别:
     向脚本传送以 - 开头的参数会导致错误,因为 PHP 会认为应该由它自身来处理这些参数(例4)。可以用参数列表分隔符 -- 来解决这个问题(例3)。在 PHP 解析完参数后,该符号后所有的参数将会被原样传送给php脚本程序。

制作可执行的php脚本

在 .php 文件的开头加上 #!/usr/bin/php ,并给该文件加上可执行属性。

例如:
#!/usr/bin/php
<?php
     var_dump($argv);
?>

保存改文件为test.php,  chmod +x test.php , 在Terminal下运行: ./test.php -a -v 
输出:
array(3) {
  [0]=>
  string(11) "./test.php"
  [1]=>
  string(2) "-a"
  [2]=>
  string(2) "-v"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: