在命令行下运行PHP脚本[带参数]的方法


Posted in PHP onJanuary 22, 2010

创建一个简单的文本文件,其中包含有以下PHP代码,并把它保存为hello.php:

<?php 
echo "Hello from the CLI"; 
?>

现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:
#php phphello.php
输出Hello from the CLI

使用标准的输入和输出
你可以在自己的PHP脚本里使用这三个常量,以接受用户的输入,或者显示处理和计算的结果。要更好地理解这一点,可以看看下面的脚本(

列表A):

列表A

<?php 
// ask for input 
fwrite(STDOUT, "Enter your name: "); // get input 
$name = trim(fgets(STDIN)); 
// write input back 
fwrite(STDOUT, "Hello, $name!"); 
?>

Look what happens when you run it:
shell> php hello.php
Enter your name: Joe
Hello, Joe!

在这个脚本里,fwrite()函数首先会向标准的输出设备写一条消息,询问用户的姓名。然后它会把从标准输入设备获得的用户输入信息读

取到一个PHP变量里,并它把合并成为一个字符串。然后就用fwrite()把这个字符串打印输出到标准的输出设备上。

-----------------使用命令行自变量
在命令行里输入程序参数来更改其运行方式是很常见的做法。你也可以对CLI程序这样做。PHP CLI带有两个特殊的变量,专门用来达到这个

目的:一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;另一个是$argc变量,它用来保存$argv数组里元素的

个数。

用PHP脚本编写一段读取$argv并处理它所含参数的代码是很简单的。试试列表B里的示例脚本,看看它是如何工作的:

列表B

<?php 
print_r($argv); 
?>

Run this script by passing it some arbitrary values, and check the output:

shell> php phptest.php chocolate 276 "killer tie, dude!"
Array
( [0] => test.php
[1] => chocolate
[2] => 276
[3] => killer tie, dude!
)

正如你可以从输出的结果看到的,传递给test.php的值会自动地作为数组元素出现在$argv里。要注意的是,$argvis的第一个自变量总是

脚本自己的名称。

下面是一个更加复杂的例子(列表C):

列表C

代码

<?php 
// check for all required arguments 
// first argument is always name of script! 
if ($argc != 4) { 
die("Usage: book.php <check-in-date> <num-nights> <room-type> "); 
} // remove first argument 
array_shift($argv); 
// get and use remaining arguments 
$checkin = $argv[0]; 
$nights = $argv[1]; 
$type = $argv[2]; 
echo "You have requested a $type room for $nights nights, checking in on $checkin. Thank you for your order! "; 
?>

下面是其用法的示例:

shell> php phpbook.php 21/05/2005 7 single
You have requested a single room for 7 nights, checking in on 21/05/2005. Thank you for your order!

在这里,脚本首先会检查$argc,以确保自变量的数量符合要求。它然后会从$argv里提取出每一个自变量,把它们打印输出到标准的输出

PHP 相关文章推荐
PHP脚本数据库功能详解(中)
Oct 09 PHP
php 分页类 扩展代码
Jun 11 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
学习php开源项目的源码指南
Dec 21 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 #PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 #PHP
获取远程文件大小的php函数
Jan 11 #PHP
PHP 编程安全性小结
Jan 08 #PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 #PHP
PHP5.3.1 不再支持ISAPI
Jan 08 #PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 #PHP
You might like
Protoss兵种对照表
2020/03/14 星际争霸
php存储过程调用实例代码
2013/02/03 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
js字符编码函数区别分析
2008/06/05 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
详解django.contirb.auth-认证
2018/07/16 Python
python实现简单名片管理系统
2018/11/30 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
工伤赔偿协议书
2014/04/15 职场文书
体育部部长竞选稿
2015/11/21 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
Redis keys命令的具体使用
2022/06/05 Redis