PHP之CLI模式

转载http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283437.html

所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件。这个可执行文件可以被用来运行命令行的PHP程序。
要在你的系统上找到这个可执行文件,就要遵照下面的步骤:
        Windows :放在PHP主安装目录下,文件名是php.exe或者(在老版本的PHP里)是php-cli.exe。
        Linux : 保存在PHP安装目录的bin/子目录下。

需要注意的是CLI模式和CGI模式运行时用的PHP.INI并非同一套配置,需要单独配置。
不论是在哪一个操作系统里,你都需要对它进行测试,以保证它能够正常运行,方法是用-v参数调用它:

PHP 5.6.11 (cli) (built: Jul  9 2015 20:55:40)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

使用CLI命令
一个简单的PHP CLI程序,命名hello.php

<?php

echo ‘hello cli‘;

现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:

shell> /path/php.exe /example/hello.php
Hello from the CLI

使用标准的输入和输出
PHP CLI会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易。这些常量见下表

常量 说明
STDIN
标准的输入设备
STDOUT
标准的输出设备
STDERR
标准的错误设备

使用示例:

<?php
fwrite(STDOUT, ‘Please Enter Your Name ‘);

$name = trim(fgets(STDIN ) );

fwrite(STDOUT, "hello $name !");

命令行自定义变量1【$argv|$argc】
在命令行里输入程序参数来更改其运行方式是很常见的做法。你也可以对CLI程序这样做。
PHP CLI带有两个特殊的变量,专门用来达到这个目的:
  一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;
  另一个是$argc变量,它用来保存$argv数组里元素的个数。

使用示例:

<?php
print_r($argv);

运行:

 php -f .\cli.php name age sex
array(4) {
  [0]=>
  string(9) ".\cli.php"
  [1]=>
  string(4) "name"
  [2]=>
  string(3) "age"
  [3]=>
  string(3) "sex"
}

要注意的是,$argv的第一个自变量总是脚本自己的名称。

注意:我们还可以用Console_Getopt PEAR类向PHP增加更加复杂的命令行参数。

命令行自定义变量2【使用Console_Getopt接收参数】

注意:这个变量仅在 register_argc_argv 打开时可用

getopt($option, $longopts) // 第一个$option接收 -h vb 第二个参数接收 --require sss

<?php
        $shortopts = "";
        $shortopts .= "f:";  // Required value
        $shortopts .= "v::"; // Optional value
        $shortopts .= "abc"; // These options do not accept values
        $longopts = array(
            "required:", // Required value
            "optional::", // Optional value
            "option", // No value
            "opt", // No value
        );
        $options = getopt($shortopts, $longopts);
        var_dump($options);

结果:

php.exe  \tools\index.php -f "value for f" -v -a --re
quired value --optional="optional value" --option will
array(6) {
  ["f"]=>
  string(11) "value for f"
  ["v"]=>
  bool(false)
  ["a"]=>
  bool(false)
  ["required"]=>
  string(5) "value"
  ["optional"]=>
  string(14) "optional value"
  ["option"]=>
  bool(false)
}

命令行变量3【使用CLI参数】

除了用命令行传递PHP脚本参数,还可以传递PHP CLI参数以更改其工作方式。

参数 说明
-a 交互式运行Run interactively
-c path 从path读取php的.ini文件
-n 不用读取php的.ini文件就直接运行
-m 列出经过编译的模块
-i 显示有关PHP构建的信息
-l 检查PHP脚本的句法
-s 以彩色方式显示源代码
-w 显示去掉注释之后的源代码
-h 显示帮助

你还可以以交互方式使用PHP CLI,也就是输入命令,马上获得结果。
要得到这种效果,只需要使用一个参数调用CLI可执行文件就行了,就像下面这样:

shell> /path/to/php -a
Interactive mode enabled
<?php
echo mktime();
1121187283
echo 2+2;
4
exit();

或者,你可以不使用-a参数就调用CLI可执行文件,直接输入完整的脚本或者代码段。

用<Ctrl>-D来结束代码段,并让CLI来执行它。见下面的例子

shell> /path/to/php
<?php
echo date("d-M-Y h:i:s", time());
?>
<Ctrl-D>
12-Jul-2005 06:54:04

原文地址:https://www.cnblogs.com/xingxia/p/php_cli.html

时间: 2025-01-02 14:37:05

PHP之CLI模式的相关文章

thinkphp3.2 cli模式的正确使用方法

最近要使用thinkphp3.2版本的cli模式,手动执的话没有问题,比如php /www/index.php home/article/get 这样没有问题,但是一般用cli模式都是定时任务比较多,这个时候写到定时任务的时候,比如 0 * * * * * php /www/index.php home/article/get 这样就会出现引入ThinkPHP.php失败的问题,这个问题算是比较容易解决的,但是后来还有其他各种报错,经过查看相关核心代码,终于找到无需修改代码,就可以轻易使用cli

php cli模式或者内置server命令行输出信息

1 /* 2 * php cli模式或者内置server命令行输出信息 3 * param fixed $data 参数可以是除了对象以外的所有数据类型,比如:字符串,数组,jason等 4 */ 5 public function console($data) { 6 7 // 中文编码处理 8 $wp = json_encode ( $data, JSON_UNESCAPED_UNICODE ); 9 10 $stdout = fopen ( 'php://stdout', 'w' ); 1

获取当前PHP运行环境是否cli模式

需要用到系统函数php_sapi_name() 或者 系统常量 PHP_SAPI,返回 cli 或 cli_server 1 /* 2 判断当前的运行环境是否是cli模式 3 */ 4 function is_cli(){ 5 return preg_match("/cli/i", php_sapi_name()) ? true : false; 6 }

PHP CLI模式开发

PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等),这样,CLI可以运行在各种场合. 有两种方法可以运行PHP CLI脚本. 第一种方法是使用php -f /path/to/yourfile.php.调用PHP CLI解释器,并给脚本传递参数.这种方法首先要设置php解释器的路径,Windows平台在运行CLI之前,需设置类似path c:\php的命令,也失去了CLI脚本第一行的意义,因此不建议使用该方法. 第二种方法是首先运行chmod+x <要运行的脚本文

PHP CLI 模式详解

* php cli 模式 * cli : Command Line Interface(命令行接口) * PHP 除了可以被Apache IIS服务器调用,还可以通过cli模式运行,因为php本质上还是C语言写的程序 * 以下是常用的php cli 命令 * 在控制台输入哦: PHP -v 显示PHP 的版本 --ini 输出php.ini配置文件的信息 --rf  function <name> 输出php 函数的信息,包括函数的参数 --ri  <extension> 输出ph

php在cli模式下取得命令行中的参数的方法-getopt命令行可传递数组-简单自定义方法取命令行参数

在cli模式下执行PHP时,自动给脚本文件传递了一个变量$argv,其值即是一个命令中所有值组成的数组(以空格区分),在PHP程序中接收参数有3种方法1.直接使用argv变量数组. 2.使用$_SERVER['argv']全局变量来获取,其值和1是一样的. 3.使用getopt方法 #getopt方法格式 array getopt ( string $options [, array $longopts ] ) options:该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符

yaf中使用Cli模式,也就是定时器

目录 CLI 模式与 Web 模式的区别: 如何使用? CLI 模式与 Web 模式的区别: CLI 其输出没有任何头(Header)信息. 出错时输出纯文本的错误信息(非 HTML 格式). 所有来自 print 和 echo 的输出将被立即写到输出端.而不作任何缓冲操作. 最大运行时间(max_execution_time)被设置为无限值. $argc 与 $argv 两个变量总是存在.并且携带了参数个数与实际的参数数组值. CLI SAPI 不会将当前目录改为已运行的脚本所在的目录. CL

php cli模式

PHP 的命令行模式 从版本 4.3.0 开始,PHP 提供了一种新类型的 CLI SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口.顾名思义,该 CLI SAPI 模块主要用作 PHP 的开发外壳应用.CLI SAPI 和其它 CLI SAPI 模块相比有很多的不同之处,我们将在本章中详细阐述.值得一提的是,CLI 和 CGI 是不同的 SAPI,

PHP CLI模式介绍及使用教程

看看全称就知道了,php-cli是php Command Line Interface的简称,即PHP命令行接口,在windows和linux下都是支持PHP-CLI模式的,其实这两者,我以前都写过文章: 一.window在命令行下运行php 程序二.linux使用crontab实现定时任务PHP-CLI模式的优势及使用场合: 1.完全支持多线程 2.如上,可以实现定时任务 3.开发桌面应用就是使用PHP-CLI和GTK包 4.linux下用php编写shell脚本 其实PHP的运行环境远远不止