PHP命令行(CLI模式)的详细介绍

来源:不言 发布时间:2019-01-04 14:57:58 阅读量:1123

本篇文章给大家带来的内容是关于PHP命令行(CLI模式)的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

CLI模式

CLI模式其实就是命令行运行模式,英文全称Command-Line Interface(命令行接口)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

$ php -h

Usage: php [options] [-f] <file> [--] [args...]

   php [options] -r <code> [--] [args...]

   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]

   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]

   php [options] -S <addr>:<port> [-t docroot] [router]

   php [options] -- [args...]

   php [options] -a

 

  -a               Run as interactive shell

                   以交互shell模式运行

  -c <path>|<file> Look for php.ini file in this directory

                   指定php.ini文件所在的目录

  -n               No configuration (ini) files will be used

                   指定不使用php.ini文件

  -d foo[=bar]     Define INI entry foo with value 'bar'

                   定义一个INI实体,key为foo,value为'bar'

  -e               Generate extended information for debugger/profiler

                   为调试和分析生成扩展信息

  -f <file>        Parse and execute <file>.

                   解释和执行文件<file>

  -h               This help

                   打印帮助信息

  -i               PHP information

                   显示PHP的基本信息

  -l               Syntax check only (lint)

                   进行语法检查(lint)

  -m               Show compiled in modules

                   显示编译到内核的模块

  -r <code>        Run PHP <code> without using script tags <?..?>

                   运行PHP代码<code>,不需要使用标签<?..?>

  -B <begin_code>  Run PHP <begin_code> before processing input lines

                   在处理输入之前先执行PHP代码<begin_code>

  -R <code>        Run PHP <code> for every input line

                   对输入的每一行作为PHP代码<code>运行

  -F <file>        Parse and execute <file> for every input line

                   对输入的每一行解析和执行<file>

  -E <end_code>    Run PHP <end_code> after processing all input lines

                   在处理所有输入的行之后执行PHP代码<end_code>

  -H               Hide any passed arguments from external tools.

                   隐藏任何来自外部工具传递的参数

  -S <addr>:<port> Run with built-in web server.

                   运行内置的web服务器

  -t <docroot>     Specify document root <docroot> for built-in web server.

                   指定用于内置web服务器的文档根目录<docroot>

  -s               Output HTML syntax highlighted source.

                   输出HTML语法高亮的源码

  -v               Version number

                   输出PHP的版本号

  -w               Output source with stripped comments and whitespace.

                   输出去掉注释和空格的源码

  -z <file>        Load Zend extension <file>.

                   载入Zend扩展文件<file>

 

  args...          Arguments passed to script. Use -- args when first argument

                   starts with - or script is read from stdin

                   传递给要运行的脚本的参数。当第一个参数以'-'开始或者是脚本是从标准输入读取的时候,使用'--'参数

 

  --ini            Show configuration file names

                   显示PHP的配置文件名

 

  --rf <name>      Show information about function <name>.

                   显示关于函数<name>的信息

  --rc <name>      Show information about class <name>.

                   显示关于类<name>的信息

  --re <name>      Show information about extension <name>.

                   显示关于扩展<name>的信息

  --rz <name>      Show information about Zend extension <name>.

                   显示关于Zend扩展<name>的信息

  --ri <name>      Show configuration for extension <name>.

                   显示扩展<name>的配置信息

以交互式Shell模式运行PHP

http://php.net/manual/en/features.commandline.interactive.php
The interactive shell stores your history which can be accessed using the up and down keys. The history is saved in the ~/.php_history file.
交互shell模式保存输入的历史命令,可以使用上下键访问到。历史被保存在~/.php_history文件。

1

2

3

4

5

6

7

8

9

10

$ php -a

Interactive shell

 

php > echo 5+8;

php > function addTwo($n)

php > {

php { return $n + 2;

php { }

php > var_dump(addtwo(2));

int(4)

查找相关类、扩展或者函数的信息

通常,我们可以使用php --info命令或者在在web服务器上的php程序中使用函数phpinfo()显示php的信息,然后再查找相关类、扩展或者函数的信息,这样做实在是麻烦了一些。

1

2

3

4

$ php --info | grep redis

redis

Registered save handlers => files user redis

This program is free software; you can redistribute it and/or modify

语法检查

只需要检查php脚本是否存在语法错误,而不需要执行它,比如在一些编辑器或者IDE中检查PHP文件是否存在语法错误。

使用-l(--syntax-check)可以只对PHP文件进行语法检查。

1

2

$ php -l index.php

No syntax errors detected in index.php

假如index.php中存在语法错误。

1

2

3

4

$ php -l index.php

PHP Parse error:  syntax error, unexpected 'echo' (T_ECHO) in index.php on line 3

Parse error: syntax error, unexpected 'echo' (T_ECHO) in index.php on line 3

Errors parsing index.php

命令行脚本

$argc 包含了 $argv数组包含元素的数目
$argv 是一个数组,包含了提供的参数,第一个参数总是脚本文件名称
console.php的命令行脚本文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

echo '命令行参数个数: ' . $argc . "\n";

echo "命令行参数:\n";

foreach ($argv as $index => $arg) {

    echo "    {$index} : {$arg}\n";

}

 

 

$ php console.php hello world

命令行参数个数: 3

命令行参数:

: console.php

: hello

: world

可以看到,第0个参数是我们执行的脚本名称。需要注意的是,如果提供的第一个参数是以-开头的话,需要在前面增加--,以告诉php这后面的参数是提供给我们的脚本的,而不是php执行文件的(php -r 'var_dump($argv);' -- -h)。
另外,在脚本中,我们可以通过php_sapi_name()函数判断是否是在命令行下运行的。

1

2

$ php -r 'echo php_sapi_name(), PHP_EOL;'

cli


标签: PHP
分享:
评论:
你还没有登录,请先