php命令行(CLI)参数详解

Posted on Posted in php

php命令行(CLI)参数

- -a 以交互式shell模式运行
- -c | 指定php.ini文件所在的目录
- -n 指定不使用php.ini文件
- -d foo[=bar] 定义一个INI实体,key为foo,value为'bar'
- -e 为调试和分析生成扩展信息
- -f 解释和执行文件.
- -h 打印帮助
- -i 显示PHP的基本信息
- -l 进行语法检查 (lint)
- -m 显示编译到内核的模块
- -r 运行PHP代码,不需要使用标签 ..?>
- -B 在处理输入之前先执行PHP代码
- -R 对输入的没一行作为PHP代码运行
- -F Parse and execute for every input line
- -E Run PHP after processing all input lines
- -H Hide any passed arguments from external tools.
- -S : 运行内建的web服务器.
- -t 指定用于内建web服务器的文档根目录
- -s 输出HTML语法高亮的源码
- -v 输出PHP的版本号
- -w 输出去掉注释和空格的源码
- -z 载入Zend扩展文件 .

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

- --ini 显示PHP的配置文件名

- --rf 显示关于函数 的信息.
- --rc 显示关于类 的信息.
- --re 显示关于扩展 的信息.
- --rz 显示关于Zend扩展 的信息.
- --ri 显示扩展 的配置信息.

## 以交互式shell模式运行php

用过 Python 的朋友对Python的交互式shell比较熟悉,在命令行下,如果我们直接输入python命令,则会进入python的交互式shell程序,接下来就可以交互式的执行一些计算任务。

在PHP命令行中,同样提供了类似的功能,使用-a参数即可进入交互shell模式。

在该shell中,我们可以执行一些简单的任务,而不需要总是新建一个php文件。

## 运行内建的Web服务器

  1. [root@agency tmp]# cat index.php   
  2. <?php  
  3. echo "hello phper";  
  4. [root@agency tmp]# php -S localhost:8888  
  5. PHP 5.6.22 Development Server started at Fri Dec 23 14:05:37 2016  
  6. Listening on http://localhost:8888  
  7. Document root is /root/tmp  
  8. Press Ctrl-C to quit.  
  9. ###############################  
  10. [root@agency ~]# curl -is http://localhost:8888  
  11. HTTP/1.1 200 OK  
  12. Host: localhost:8888  
  13. Connection: close  
  14. X-Powered-By: PHP/5.6.22  
  15. Content-type: text/html; charset=UTF-8  
  16.   
  17. hello phper  

在web服务运行的窗口,可以看到输出的日志信息

## 查找PHP的配置文件

  1. [root@agency tmp]# php -ini  
  2. phpinfo()  
  3. PHP Version => 5.6.22  

## 查看类/函数/扩展信息

  1. [root@agency tmp]# php --info | grep redis  
  2. redis  
  3. Registered save handlers => files user redis rediscluster redis rediscluster   
  4. This program is free software; you can redistribute it and/or modify  

- --rf 显示关于函数 的信息.
- --rc 显示关于类 的信息.
- --re 显示关于扩展 的信息.
- --rz 显示关于Zend扩展 的信息.
- --ri 显示扩展 的配置信息.

> 例如,我们希望查看扩展redis的配置信息

[root@agency tmp]# php --ri redis

redis

Redis Support => enabled
Redis Version => 2.2.8

> 查看redis类的信息

  1. [root@agency tmp]# php --rc redis  
  2. Class [ <internal:redis> class Redis ] {  
  3.   
  4.   - Constants [19] {  
  5.     Constant [ integer REDIS_NOT_FOUND ] { 0 }  
  6.     Constant [ integer REDIS_STRING ] { 1 }  
  7.     Constant [ integer REDIS_SET ] { 2 }  
  8.     Constant [ integer REDIS_LIST ] { 3 }  
  9.     Constant [ integer REDIS_ZSET ] { 4 }  
  10.     Constant [ integer REDIS_HASH ] { 5 }  
  11.     Constant [ integer PIPELINE ] { 2 }  
  12. ……  

> 查看函数printf的信息

  1. [root@agency tmp]# php --rf printf  
  2. Function [ <internal:standard> function printf ] {  
  3.   
  4.   - Parameters [2] {  
  5.     Parameter #0 [ <required> $format ]  
  6.     Parameter #1 [ <optional> ...$args ]  
  7.   }  
  8. }  

## 语法检查

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

  1. [root@agency tmp]# php -l index.php   
  2. No syntax errors detected in index.php  
  3. [root@agency tmp]# vim index.php # 使其错误  
  4. [root@agency tmp]# php -l index.php   
  5. PHP Parse error:  syntax error, unexpected end of file, expecting ',' or ';' in index.php on line 3  
  6. Errors parsing index.php  

## 命令行脚本开发

- $argc 包含了 $argv数组包含元素的数目
- $argv 是一个数组,包含了提供的参数,第一个参数总是脚本文件名称

  1. [root@agency tmp]# cat console.php   
  2. <?php  
  3. echo '命令行参数个数: ' . $argc . "\n";  
  4. echo "命令行参数:\n";  
  5. foreach ($argv as $index => $arg) {  
  6.     echo "    {$index} : {$arg}\n";  
  7. }  
  8. [root@agency tmp]# php console.php hello world  
  9. 命令行参数个数: 3  
  10. 命令行参数:  
  11.     0 : console.php  
  12.     1 : hello  
  13.     2 : world  

## 另外,在脚本中,我们可以通过php_sapi_name()函数判断是否是在命令行下运行的

  1. [root@agency tmp]# php -r 'echo php_sapi_name(), PHP_EOL;'  
  2. cli  
» 转载请注明来源:呢喃 » php命令行(CLI)参数详解