保持谦卑之心
No design , No code

PHP CLI 模式详解

* php cli 模式
* cli : Command Line Interface(命令行接口)
* PHP 除了可以被Apache IIS服务器调用,还可以通过cli模式运行,因为php本质上还是C语言写的程序
* 以下是常用的php cli 命令 * 在控制台输入哦:
php -v 显示PHP 的版本

$ php -v
PHP 7.1.21 (cli) (built: Aug 15 2018 23:06:44) ( ZTS MSVC14 (Visual C++ 2015) x6
4 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

–ini 输出php.ini配置文件的信息

Configuration File (php.ini) Path: C:\windows
Loaded Configuration File:         E:\PHPTools\php-7.1.21-Win32-VC14-x64\php.ini

Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

–rf  function <name> 输出php 函数的信息,包括函数的参数

$ php  --rf str_replace
Function [ <internal:standard> function str_replace ] {

  - Parameters [4] {
    Parameter #0 [ <required> $search ]
    Parameter #1 [ <required> $replace ]
    Parameter #2 [ <required> $subject ]
    Parameter #3 [ <optional> &$replace_count ]
  }
}

–ri  <extension> 输出php扩展的信息

$ php --ri mysqli

mysqli

MysqlI Support => enabled
Client API library version => mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847f
a7519001be390c98ae0acafe387 $
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.allow_persistent => On => On
mysqli.rollback_on_cached_plink => Off => Off
mysqli.default_host => no value => no value
mysqli.default_user => no value => no value
mysqli.default_pw => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_socket => no value => no value
mysqli.reconnect => Off => Off
mysqli.allow_local_infile => On => On

-i 输出php的详细信息,内容很多,相当于phpinfo();

-m 输出被编译的模块

$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
intl
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
odbc
openssl
pcre
PDO
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
Phar
readline
Reflection
session
shmop
SimpleXML
SPL
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

–re 输出php扩展模块的信息,包块此模块对应的函数,此extension中定义的常量

$ php --re ftp
Extension [ <persistent> extension #33 ftp version 7.1.21 ] {

  - Constants [11] {
    Constant [ integer FTP_ASCII ] { 1 }
    Constant [ integer FTP_TEXT ] { 1 }
    Constant [ integer FTP_BINARY ] { 2 }
    Constant [ integer FTP_IMAGE ] { 2 }
    Constant [ integer FTP_AUTORESUME ] { -1 }
    Constant [ integer FTP_TIMEOUT_SEC ] { 0 }
    Constant [ integer FTP_AUTOSEEK ] { 1 }
    Constant [ integer FTP_USEPASVADDRESS ] { 2 }
    Constant [ integer FTP_FAILED ] { 0 }
    Constant [ integer FTP_FINISHED ] { 1 }
    Constant [ integer FTP_MOREDATA ] { 2 }
  }

  - Functions {
    Function [ <internal:ftp> function ftp_connect ] {

      - Parameters [3] {
        Parameter #0 [ <required> $host ]
        Parameter #1 [ <optional> $port ]
        Parameter #2 [ <optional> $timeout ]
      }
    }
    Function [ <internal:ftp> function ftp_ssl_connect ] {

      - Parameters [3] {
        Parameter #0 [ <required> $host ]
        Parameter #1 [ <optional> $port ]
        Parameter #2 [ <optional> $timeout ]
      }
    }
    Function [ <internal:ftp> function ftp_login ] {

      - Parameters [3] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $username ]
        Parameter #2 [ <required> $password ]
      }
    }
    Function [ <internal:ftp> function ftp_pwd ] {

      - Parameters [1] {
        Parameter #0 [ <required> $ftp ]
      }
    }
    Function [ <internal:ftp> function ftp_cdup ] {

      - Parameters [1] {
        Parameter #0 [ <required> $ftp ]
      }
    }
    Function [ <internal:ftp> function ftp_chdir ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $directory ]
      }
    }
    Function [ <internal:ftp> function ftp_exec ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $command ]
      }
    }
    Function [ <internal:ftp> function ftp_raw ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $command ]
      }
    }
    Function [ <internal:ftp> function ftp_mkdir ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $directory ]
      }
    }
    Function [ <internal:ftp> function ftp_rmdir ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $directory ]
      }
    }
    Function [ <internal:ftp> function ftp_chmod ] {

      - Parameters [3] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $mode ]
        Parameter #2 [ <required> $filename ]
      }
    }
    Function [ <internal:ftp> function ftp_alloc ] {

      - Parameters [3] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $size ]
        Parameter #2 [ <optional> &$response ]
      }
    }
    Function [ <internal:ftp> function ftp_nlist ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $directory ]
      }
    }
    Function [ <internal:ftp> function ftp_rawlist ] {

      - Parameters [3] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $directory ]
        Parameter #2 [ <optional> $recursive ]
      }
    }
    Function [ <internal:ftp> function ftp_systype ] {

      - Parameters [1] {
        Parameter #0 [ <required> $ftp ]
      }
    }
    Function [ <internal:ftp> function ftp_pasv ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $pasv ]
      }
    }
    Function [ <internal:ftp> function ftp_get ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $local_file ]
        Parameter #2 [ <required> $remote_file ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $resume_pos ]
      }
    }
    Function [ <internal:ftp> function ftp_fget ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $fp ]
        Parameter #2 [ <required> $remote_file ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $resumepos ]
      }
    }
    Function [ <internal:ftp> function ftp_put ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $remote_file ]
        Parameter #2 [ <required> $local_file ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $startpos ]
      }
    }
    Function [ <internal:ftp> function ftp_fput ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $remote_file ]
        Parameter #2 [ <required> $fp ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $startpos ]
      }
    }
    Function [ <internal:ftp> function ftp_size ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $filename ]
      }
    }
    Function [ <internal:ftp> function ftp_mdtm ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $filename ]
      }
    }
    Function [ <internal:ftp> function ftp_rename ] {

      - Parameters [3] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $src ]
        Parameter #2 [ <required> $dest ]
      }
    }
    Function [ <internal:ftp> function ftp_delete ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $file ]
      }
    }
    Function [ <internal:ftp> function ftp_site ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $cmd ]
      }
    }
    Function [ <internal:ftp> function ftp_close ] {

      - Parameters [1] {
        Parameter #0 [ <required> $ftp ]
      }
    }
    Function [ <internal:ftp> function ftp_set_option ] {

      - Parameters [3] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $option ]
        Parameter #2 [ <required> $value ]
      }
    }
    Function [ <internal:ftp> function ftp_get_option ] {

      - Parameters [2] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $option ]
      }
    }
    Function [ <internal:ftp> function ftp_nb_fget ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $fp ]
        Parameter #2 [ <required> $remote_file ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $resumepos ]
      }
    }
    Function [ <internal:ftp> function ftp_nb_get ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $local_file ]
        Parameter #2 [ <required> $remote_file ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $resume_pos ]
      }
    }
    Function [ <internal:ftp> function ftp_nb_continue ] {

      - Parameters [1] {
        Parameter #0 [ <required> $ftp ]
      }
    }
    Function [ <internal:ftp> function ftp_nb_put ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $remote_file ]
        Parameter #2 [ <required> $local_file ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $startpos ]
      }
    }
    Function [ <internal:ftp> function ftp_nb_fput ] {

      - Parameters [5] {
        Parameter #0 [ <required> $ftp ]
        Parameter #1 [ <required> $remote_file ]
        Parameter #2 [ <required> $fp ]
        Parameter #3 [ <required> $mode ]
        Parameter #4 [ <optional> $startpos ]
      }
    }
    Function [ <internal:ftp> function ftp_quit ] {

      - Parameters [1] {
        Parameter #0 [ <required> $ftp ]
      }
    }
  }
}

用cli方式运行PHP程序

新建一个cli.php文件

第一行输入:

#!C:\php\php.exe -q

此命令表示这是一个cli程序

后输入php标签

<?php

echo  “hello php cli”;

?>

然后在命令行模式输入 php.exe cli.php

$ php.exe cli.php
 #!C:\php\php.exe -q
 hello php cli
 #!C:\php\php.exe -q
 <?php
	echo 'hello php cli';
 ?>

通过cli 方式传参

php 通过 $_SERVER[‘argc’] 和 $_SERVER[‘argc’]来传递参数

$ php.exe cli.php
hello php cli
int(1)
array(1) {
  [0]=>
  string(7) "cli.php"
}

#!C:\php\php.exe -q
<?php
   echo "hello php cli\n";
   var_dump($_SERVER['argc']);   //$_SERVER['argc']  为传递的参数的个数
   var_dump($_SERVER['argv']);   //S_SERVER['argv']  为传递的参数的值,以数组表示
?>

注: 在apache服务器向php解释器传递网页向服务器提交的数据时,就是通过环境变量传递的,一些PHP默认的全局变量是PHP进程启动后,初始化

运行环境后,系统给设置的PHP全局变量,所有PHP可以直接使用。

赞(0) 打赏
未经允许不得转载:吴庆宝的个人blog » PHP CLI 模式详解

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

吴庆宝的技术博客

技术博客github

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏