广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php cli是什么意思
  • 139
分享到

php cli是什么意思

phpcli 2020-05-15 01:05:50 139人浏览 无得
摘要

本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,cli全称“Command Line Interface”,意思为“命令行接口”,是一种命令行运行模式。PHP的CLI命令行运行模式浅析在做开发的时候,我们

教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

php中,cli全称“Command Line Interface”,意思为“命令行接口”,是一种命令行运行模式。

PHP的CLI命令行运行模式浅析

在做开发的时候,我们不仅仅只是做各种网站或者接口,也经常需要写一些命令行脚本用来处理一些后端事务。比如对数据进行处理统计等。当然也是为了效率着想,当一个事务有可能会有较长的耗时时,往往会交由服务器的定时器来固定时间调用脚本进行处理,从而让客户端能够有更好的用户体验。我们今天就来了解下 PHP 的命令行运行模式,也就是 PHP CLI 。

CLI 与 CGI

首先来看一下 CLI 和 CGI 的区别。我们都知道,Nginx 使用的是 FastCgi 来调用 PHP 的服务。CGI 是通用编程接口,也就是给调用者提供的一种使用本程序的接口。Nginx 这种类型的服务器并不是直接运行 PHP 程序的,而是通过 FastCgi 来执行 PHP 程序并获得返回结果。

CLI 则是 Command Line Interface,即命令行接口。主要用作 PHP 的开发外壳应用。也就是用 PHP 来进行 shell 脚本的开发。相比 linux 原生的 shell 来说,当然是方便了许多。在命令行状态下,直接使用 php 命令就可以运行某段 PHP 代码或某个 PHP 文件了。

另外,我们在命令行也可以直接使用 phpcgi 来运行一段 PHP 代码或者某个 PHP 文件,它和直接使用 php 命令来运行有什么区别呢?

  • CLI 的输出没有任何头信息

  • CLI 在运行时,不会把工作目录改为脚本的当前目录

  • CLI 出错时输出纯文本的错误信息(非 html 格式)

强制覆盖了 php.ini 中的某些设置,因为这些设置在外壳环境下是没有意义的

// PHP的CLI命令行运行模式浅析.php
echo getcwd();

//  php-cgi dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
// ...../MyDoc/博客文章/dev-blog/php/202004/source

// php dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php

我们选取最典型的一个例子,我们运行的这个文件中,使用 getcwd() 输出当前脚本运行的目录,可以看出两种运行方式输出的结果明显不同。php-cgi 是以文件所在目录为基准输出,而 php 则是以当前运行这个命令的目录为基准输出。

直接运行 PHP 代码

在做一些简单的调试的时候,我们可以直接通过 CLI 来运行一段代码。

// php -r "echo 121;"
// 121

也就是简单的加个 -r 参数,后面跟上一段代码,这段代码必须用引号括起来。而且这个引号更推荐使用单引号,后面的例子会展示为什么用单引号更好。

CLI 获取参数

命令行模式下也是可以给脚本传递参数的。

// PHP的CLI命令行运行模式浅析.php
print_r($argv);
// php-cgi dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php 1 2 3
// X-Powered-By: PHP/7.3.0
// Content-type: text/html; charset=UTF-8

// php dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php 1 2 3
// Array
// (
//     [0] => dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
//     [1] => 1
//     [2] => 2
//     [3] => 3
// )

测试文件中,我们打印了 \$argv 变量。PHP 脚本运行的时候,会将命令行的所有参数保存在 $argv 变量中,并且还有一个 $arGC 变量会保存参数的个数。

我们依然是使用 php-cgi 和 php ,两种模式来测试,从这里我们能发现 php-cgi 模式中 $argv 打印的内容竟然是头信息,而不是具体的参数信息。这也没错,毕竟 CGI 模式本来就是为 WEB 服务器提供的接口,所以它接收的是 post 、 get 这类的参数而不是命令行的参数。

CLI 模式下我们正常获得了参数内容,并且 $argv[0] 始终保存的是当前运行文件及路径。

CLI 命令行实用选项

最后,我们再介绍一些命令行中常用的选项。

  • -r 直接运行代码时的参数传递

// php -r "var_dump($argv);" app 
// Warning: var_dump() expects at least 1 parameter, 0 given in Command line code on line 1
// 双引号 ",sh/bash 实行了参数替换

// php -r 'var_dump($argv);' app
// array(2) {
//     [0]=>string(19) "Standard input code"
//     [1]=>string(3) "app"
// }

// php -r 'var_dump($argv);' -- -h
// array(2) {
//     [0]=>string(19) "Standard input code"
//     [1]=>string(2) "-h"
// }

第一段代码在对双引号运行的 CLI 代码进行参数传递的时候,会直接报警告。其实很好理解,双引号里面的$会让系统的 sh/bash 以为这是个变量从而进行变量参数替换。所以更推荐使用单引号进行日常的简单测试。

第二段代码能够正常打印传递进来的参数内容。第三行代码则是需要传递带 - 符号的内容时,需要先给一个 -- 参数列表分隔符。这是因为 -xxx 的内容会让 php 命令认为这是一个命令选项而不是参数,所以我们添加一个分隔符就可以让分隔符之后的参数内容原样传递进代码中。

交互式地运行 PHP

// php -a
// php > $a = 1;
// php > echo $a;
// php > 1

添加一个 -a 选项,PHP 就会以交互式地形式运行,我们可以直接在交互状态下写代码或运行任何内容。

查看 phpinfo() 及已经安装的模块

这两个应该是大家经常会使用的两个选项。

// 输出 phpinfo()
// php -i

// 输出 PHP 中加载的模块
// php -m

// 查看模块详细信息
// php --ri swoole

另外我们还可以通过 --ri 模块名 这个命令来查看具体某个扩展模块的详细信息。比如这里我们可以查看到 swoole 扩展的版本及相关的配置信息。

查看某个文件

// 显示去除了注释和多余空白的源代码
// php -w dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php
// <?php
//  echo getcwd(); print_r($argv);
// 通过 linux 管道读取输入
// cat dev-blog/php/202004/source/PHP的CLI命令行运行模式浅析.php | php -r "print file_get_contents('php://stdin');"
// ......这个文件里面所有的内容

最后两个小技巧,一个是通过 -w 选项,我们可以打印这个 php 文件中所有非注释和换行的内容。可以看成是像前端的代码压缩一样的能力。我们这个测试文件中有非常多的注释,通过这个命令后我们打印出来的内容是去除掉所有注释和空白行的结果。

另一个是我们可以用 linux 管道的方式向 PHP CLI 发送数据。这里我们通过 cat 查看我们的测试文件然后通过管道发送给 PHP CLI,在脚本中使用 STDIN 来读取管道发送过来的内容完成了整个文件内容的打印。这里我们没进行任何过滤,所以打印的是整个文件里面的内容,大家可以运行这个命令来测试。

总结

其实命令行模式运行的时候还有很多的选项,这里我们只是选取了一部分非常有用的内容进行展示。当然,大部分框架都提供了用于命令行的脚本框架,比如 laravel 中可以通过 php artisan make:command 来创建命令行脚本,然后使用 php artisan 来运行框架中的脚本。这些内容将来我们在学习框架方面知识的内容将会进行详细的讲解。

命令行 CLI 模式的应用非常广泛,几乎任何项目中都会使用到,所以,深入的学习掌握它将会使我们大受裨益。

--结束END--

本文标题: php cli是什么意思

本文链接: https://www.lsjlt.com/news/1419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php cli是什么意思
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,cli全称“Command Line Interface”,意思为“命令行接口”,是一种命令行运行模式。PHP的CLI命令行运行模式浅析在做开发的时候,我们...
    99+
    2020-05-15
    php cli
  • php_sapi = cli指的是什么意思
    小编给大家分享一下php_sapi = cli指的是什么意思,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!“php_sapi=cli”中PHP_SAPI是用来判断是使用命令行还是浏览器执行的,如果“PHP_SAPI==’c...
    99+
    2023-06-15
  • php 是什么意思
    本文操作环境:Windows7系统、PHP7.4版、DELL G3电脑php是什么意思 ?PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并...
    99+
    2015-10-12
    php
  • php是什么意思
    PHP是一种通用开源脚本语言,与C语言类似,是常用的网站编程语言,随着移动应用的兴起,也可用于开发API接口,几乎支持所有流行的数据库以及操作系统,PHP 语言作为当今热门的网站程序开发语言,它具有成本低、速度快、可移植性好、内置丰富的函数...
    99+
    2022-10-23
  • php bom是什么意思
    php bom是用来判断文本文件是哪一种Unicode编码的标记;在utf-8编码文件中,BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码。本教程操作环境:Windows10系统、PHP8.1版、DELL G3电脑php b...
    99+
    2023-05-14
    php bom
  • php mail是什么意思
    php mail是php邮件的意思,在php中是指mail()函数,该函数用于从脚本中发送电子邮件;其使用语法是“mail(to,subject,message,headers,parameters)”;php运行邮件函数需要一个已安装且正...
    99+
    2023-05-14
    mail php
  • php aco是什么意思
    在php中,ACO是指“访问控制对象”,每个具体的ACO也有一个标识,就按照M/C/A的格式进行标识;根据具体的业务要求,ACO可以定义到某个具体的Action级别,或者Controller级别或者整个module级别。本教程操作环境:wi...
    99+
    2023-05-14
    aco php
  • php apache是什么意思
    PHP和Apache是Web开发的两个常用工具,两者结合使用可以创建动态网站,这就是PHP+Apache模式(PHP+Apache模式也被称为LAMP模式,其中L表示Linux操作系统)。PHP是一种服务器端脚本语言,是用于构建动态网站和网...
    99+
    2023-05-14
  • php oop 是什么意思
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php oop 是什么意思?PHP 面向对象在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息...
    99+
    2020-07-26
    php oop
  • php spl是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php spl是什么意思SPL为PHP标准库。spl,指SPL - Standard PHP Library 标准PHP类库。内容主要包括数据结构类,迭代器,异常类,SP...
    99+
    2017-05-19
    php spl
  • php xor是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php xor是什么意思xor 属于PHP中的一个逻辑运算符,也叫“异或”运算符。语法:x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true...
    99+
    2022-04-29
    php xor
  • job php是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑job php是什么意思?job.php是一种脚本文件,因为后缀名为“PHP”的文件就是一种程序语言的命名格式结尾。PHP(外文名:PHP: Hypertext Prep...
    99+
    2021-05-21
    php
  • php soap是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑一、php soap是什么意思?什么是wsdl,为什么要用他们SOAP是基于XML和HTTP通信协议,xml各种平台,各种语言都支持的一个种语言。http呢它得到了所有的...
    99+
    2015-04-05
    soap php
  • php vc15是什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php vc15是什么意思?php vc15就是指该版本PHP是用Visual Studio 2017编译的,也就是说当用户下载VC15版本的PHP,就需要先安装“Visua...
    99+
    2020-09-14
    php vc15
  • php pre是什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php pre是什么意思<pre> </pre>是html标签,意思是按原样输出不做更改。php代码中用pre主要是做错误代码输出时候,或者打印数组输...
    99+
    2017-09-06
    php pre
  • php中=是什么意思
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php中=是什么意思?PHP 中基础的赋值运算符是 "="。这意味着右侧赋值表达式会为左侧运算数设置值。如 z=x+y,右侧表达式为左侧运算数设置值。...
    99+
    2021-07-01
    php
  • php static 是什么意思
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php static 是什么意思static是PHP内置关键词。静态(static)关键字 小技巧本页说明了用 static 关键字来定义静态方法和属性。static 也...
    99+
    2015-02-21
    php static
  • php stdin是什么意思
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php stdin是什么意思PHP STDIN 用法:PHP 语言中 "STDIN" 用于从控制台读取内容,遇到此常量或者通过 fopen() 函数...
    99+
    2014-12-07
    php stdin
  • php version意思是什么
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php version意思是什么?phpversion(PHP 4, PHP 5, PHP 7, PHP 8)phpversion — 获取当前的PHP版本说明 php...
    99+
    2016-07-23
    phpversion
  • php explode是什么意思
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,explode的意思为“字符串转数组”。explode() 函数可以基于字符串分隔符拆分字符串,即它将一个字符串根据分隔符拆分为若干个子串,然后将这些子串组...
    99+
    2017-08-14
    php explode
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作