本篇文章给大家带来的内容是关于PHP命令行(CLI模式)的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
CLI模式
CLI模式其实就是命令行运行模式,英文全称Command-Line Interface(命令行接口)
$ php -h
Usage: php [options] [-f] [--] [args...]
php [options] -r [--] [args...]
php [options] [-B ] -R [-E ] [--] [args...]
php [options] [-B ] -F [-E ] [--] [args...]
php [options] -S : [-t docroot] [router]
php [options] -- [args...]
php [options] -a
-a Run as interactive shell
以交互shell模式运行
-c | 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 Parse and execute .
解释和执行文件
-h This help
打印帮助信息
-i PHP information
显示PHP的基本信息
-l Syntax check only (lint)
进行语法检查(lint)
-m Show compiled in modules
显示编译到内核的模块
-r Run PHP
without using script tags ..?>
运行PHP代码,不需要使用标签..?>
-B Run PHP before processing input lines
在处理输入之前先执行PHP代码
-R Run PHP
for every input line
对输入的每一行作为PHP代码运行
-F Parse and execute for every input line
对输入的每一行解析和执行
-E Run PHP after processing all input lines
在处理所有输入的行之后执行PHP代码
-H Hide any passed arguments from external tools.
隐藏任何来自外部工具传递的参数
-S : Run with built-in web server.
运行内置的web服务器
-t Specify document root for built-in web server.
指定用于内置web服务器的文档根目录
-s Output HTML syntax highlighted source.输出HTML语法高亮的源码
-v Version number
输出PHP的版本号
-w Output source with stripped comments and whitespace.
输出去掉注释和空格的源码
-z Load Zend extension .
载入Zend扩展文件
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 Show information about function .
显示关于函数的信息
--rc Show information about class .
显示关于类的信息
--re Show information about extension .
显示关于扩展的信息
--rz Show information about Zend extension .
显示关于Zend扩展的信息
--ri Show configuration for extension .
显示扩展的配置信息
以交互式Shell模式运行PHP
http://php.com/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文件。
$ 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的信息,然后再查找相关类、扩展或者函数的信息,这样做实在是麻烦了一些。
$ 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文件进行语法检查。
$ php -l index.php
No syntax errors detected in index.php
假如index.php中存在语法错误。
$ 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的命令行脚本文件
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()函数判断是否是在命令行下运行的。
$ php -r 'echo php_sapi_name(), PHP_EOL;'
cli