• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php命令行

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

转载(http://blog.jobbole.com/109093/)

PHP作为一门web开发语言,通常情况下我们都是在Web Server中运行PHP,使用浏览器访问,因此很少关注其命令行操作以及相关参数的使用,但是,特别是在类Unix操作系统上,PHP可以作为一门脚本语言执行与shell类似的处理任务。

php命令行(CLI)参数详解

查看PHP的所有命令行参数,使用php -h命令。我们将会对大部分常用的命令行参数进行一一解释,以加深对PHP能力的认识,更加快捷的在服务端命令行下使用PHP或者调试各种因为对环境不熟悉而出现的问题。

 
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
shell模式运行
ini文件所在的目录
ini文件
'bar'
               为调试和分析生成扩展信息
.
               打印帮助
PHP的基本信息
)
               显示编译到内核的模块
>
PHP代码
PHP代码运行
line
lines
.
.
web服务器的文档根目录
HTML语法高亮的源码
PHP的版本号
               输出去掉注释和空格的源码
.
 
--参数
 
PHP的配置文件名
 
.
.
.
.
.

上面列出了PHP命令所有的参数及其注释,接下来,我们将对其中比较常用的参数举例说明。

以交互式shell模式运行php

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

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

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

更详细的使用说明,请参考官方文档

运行内建的Web服务器

从PHP 5.4.0开始,PHP的命令行模式提供了一个内建的web服务器。使用-S开始运行web服务。

假设当前我们处在目录/Users/mylxsw/codes/php/aicode/demo,在该目录中,存在index.php文件。

 
1
2
3
4
ls
php
php
;

在该目录中,执行以下命令可以启动内建web服务器,并且默认以当前目录为工作目录

 
1
2
3
4
5
8000
2015
//localhost:8000
demo
.

我们另外开启一个shell窗口,请求http://localhost:8000/即可看到脚本输出

 
1
2
3
4
5
6
7
8
//localhost:8000/
OK
8000
close
5.6.3
;
 
!

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

以上我们在启动内建服务器的时候,只指定了-S参数让PHP以web服务器的方式运行,这时,PHP会使用当前目录作为工作目录,因此回到当前目录下寻找请求的文件,我们还可以使用-t参数指定其它的目录作为工作目录(文档根目录)。

更多详细信息,请参考官方文档

查找PHP的配置文件

在有的时候,由于服务器上软件安装比较混乱,我们可能安装了多个版本的PHP环境,这时候,如何定位我们的PHP程序使用的是那个配置文件就比较重要了。在PHP命令行参数中,提供了–ini参数,使用该参数,可以列出当前PHP的配置文件信息。

 
1
2
3
4
5
6
7
8
9
10
11
ini
5.6
ini
d
)
 
ini
/
ini
)
)

上述的服务器上我们安装了两个版本的PHP,由上可以看到,使用php –ini命令可以很方便的定位当前PHP命令将会采用哪个配置文件。

查看类/函数/扩展信息

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

 
1
2
3
4
redis
redis
redis
modify

我们可以使用下列参数更加方便的查看这些信息

 
1
2
3
4
5
.
.
.
.
.

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

 
1
2
3
4
5
6
redis
 
redis
 
enabled
2.2.7

查看redis类的信息

 
1
2
3
4
5
6
7
8
9
10
11
redis
{
 
{
}
.
{
.
{
}
.

查看函数printf的信息

 
1
2
3
4
5
6
7
8
printf
{
 
{
#0 [  $format ]
#1 [  ...$args ]
}
}

语法检查

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

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

 
1
2
php
php

假如此时我们的index.php中存在语法错误

 
1
2
3
4
5
php
3
 
3
php

命令行脚本开发

在使用PHP开发命令行脚本的时候,与开发web程序是明显不同的,在web程序中,我们可以通过改变url的参数,为PHP环境提供不同的输入,但是在命令行脚本程序中如何获取外部的输入呢?

在使用C语言开发程序时,我们通常会在main函数中提供两个可选的参数int main(int argc, char *argv[]),这两个参数就是从命令行提供的输入参数。在PHP中,提供了两个全局变量$argc和$argv用于获取命令行输入。

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

假设我们有一个名为console.php的命令行脚本文件

 
1
2
3
4
5
;
;
{
;
}

在命令行下执行该脚本

 
1
2
3
4
5
6
world
3
:
php
hello
world

可以看到,第0个参数是我们执行的脚本名称。需要注意的是,如果提供的第一个参数是以-开头的话,需要在前面增加–,以告诉php这后面的参数是提供给我们的脚本的,而不是php执行文件的(php -r ‘var_dump($argv);’ — -h)。

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

 
1
2
'echo php_sapi_name(), PHP_EOL;'
cli


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php处理上百万条的数据库如何提高处理查询速度发布时间:2022-07-10
下一篇:
php浏览次数累加代码发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap