没有合适的资源?快使用搜索试试~ 我知道了~
学习如何更好地集成脚本和命令行工具。本文考察如何使用shell_exec()、exec()、passthru()和system();安全地将信息传递到命令行;以及安全地从命令行获取信息。如果您使用过PHP,您就会发现它是创建特性丰富的Web页面的出色工具。作为一大脚本语言,PHP:1.容易学习。2.有许多强大的框架(比如CakePHP和CodeIgniter),让您能够像Rails程序员一样高效。3.能够与MySQL、PostgreSQL、Microsoft?SQLServer,甚至Oracle通信。4.能够轻松地与JavaScript框架集成,比如script.aculo.us和jQuery
资源推荐
资源详情
资源评论



























在在PHP中使用命令行工具中使用命令行工具
在 Web 应用程序中运行 shell 命令
学习如何更好地集成脚本和命令行工具。本文考察如何使用 shell_exec()、exec()、passthru() 和 system();安全地将信息传
递到命令行;以及安全地从命令行获取信息。
如果您使用过 PHP,您就会发现它是创建特性丰富的 Web 页面的出色工具。作为一大脚本语言,PHP:
1.容易学习。
2.有许多强大的框架(比如 CakePHP 和 CodeIgniter),让您能够像 Rails 程序员一样高效。
3.能够与 MySQL、PostgreSQL、Microsoft? SQL Server,甚至 Oracle 通信。
4.能够轻松地与 JavaScript 框架集成,比如 script.aculo.us 和 jQuery。
但有时候,您想做更多的事情,或必须做更多的事情。我的意思是您必须直接与 PHP 运行的服务器的文件系统打交道。您最
终需要处理文件系统上的文件,了解运行的进程或执行其他任务。
首先,您对在 PHP 使用 file() 命令打开文件很满意。但是在某种程度上,完成某些事情的唯一途径是在服务器上运行 shell 命
令并获得特定的输出。例如,您可能想知道特定目录包含多少个文件。或者您想知道向某组日志文件写了多少行内容。或者您
想操作这些文件,将它们复制到另一个目录,或使用 rsync 将它们发送到另一个位置。
在 “PHP 命令行?是的,您可以!” 这篇文章中,Roger McCoy 演示了如何从命令行直接使用 PHP —— 不需任何 Web 浏览
器。在这篇文章中,我从另一个角度看待相同的主题,向您展示如何紧密地与底层 shell 命令集成,以及将返回值包含到您的
界面和进程中。
仅当您运行在 Linux?、Berkeley Software Distribution (BSD) 或一些其他 UNIX? 版本上时,这些操作才有效。我假设您运行
在 Linux-Apache-MySQL-PHP (LAMP) 堆栈上。如果您运行其他版本的 UNIX,具体细节可能不同,因为在每个版本中命令
行的可用性都不同。我知道很多人还在 Mac OS X(运行某个版本的 BSD)从事开发,因此我尽量保持示例命令的通用性,
确保移植方便。
命令行概述
PHP Command Line Interface (CLI) Server Application Programming Interface (SAPI) 在 PHP V4.2.0 开始发布,用于试验目
的。到 V4.3.0 时,已经受到完整支持并且默认启用。PHP CLI SAPI 允许您开发 PHP 支持的 shell 脚本,甚至是基于桌面的
脚本。事实上,可以用 PHP 创建可直接从命令行运行的工具。采用这种方式,PHP 开发人员可以像 Perl、AWK、Ruby 或
shell 程序员一样高效。
本文探究构建到 PHP 中的工具,让您了解 PHP 运行的底层 shell 环境和文件系统。PHP 为执行外部命令提供大量函数,其中
包括 shell_exec()、exec()、passthru() 和 system()。这些命令是相似的,但为您运行的外部程序提供不同的界面。所有这些
命令都衍生一个子进程,用于运行您指定的命令或脚本,并且每个子进程会在命令输出写到标准输出 (stdout) 时捕捉它们。
shell_exec()
shell_exec() 命令行实际上仅是反撇号 (`) 操作符的变体。如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部
捕捉其他命令的输出。例如,清单 1 显示了如何使用反撇号在当前目录中获取每个文本(.txt)的单词计数。
清单 1. 使用反撇号计算单词数量
#! /bin/sh
number_of_words=`wc -w *.txt`
echo $number_of_words
#result would be something like:
#165 readme.txt 388 results.txt 588 summary.txt
#and so on....
在您的 PHP 脚本中,您可以在 shell_exec() 中运行这个简单的命令,如清单 2 所示,并获取想要的结果。这里假设在同一个
目录下有一些文本文件。
清单 2. 在 shell_exec() 中运行相同的命令
<?php
$results = shell_exec('wc -w *.txt');
echo $results;
?>
在图 1 中可以看到,获得的结果与从 shell 脚本得到的一样。这是因为 shell_exec() 允许您通过 shell 运行外部程序,然后以
资源评论


weixin_38740144
- 粉丝: 1
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电子商务下物流管理(1).pptx
- 本科毕设论文-—木马程序设计及植入技术(1).doc
- 可编程器件的发展现状及典型公司器件的特点(1).docx
- 软件工程毕业设计-基于ios平台的客户端应用之食安检的设计与实现(1).doc
- 互联网思维的运用与广告实践课程教学改革(1).docx
- 大学计算机专业自荐信6篇怎么写(1).docx
- 计算机绘图——AutoCADAutodeskInventorppt课件(完整版)(1).ppt
- 互联网+下的会计改革与发展问题研究(1).docx
- 软件测试-教案PPT(1).ppt
- 以互联网为基础的大学生创新创业能力的培养策略(1).docx
- 我国互联网金融发展的现状与问题分析(1).docx
- 2019年计算机暑假实习报告总结(1).doc
- ppt编译原理2章(1).pptx
- 运用大数据知识推动人力资源管理能力提升论文(1).doc
- 中小企业电子商务问题与对策分析论文(1).docx
- (完整版)计算机软件设计开发控制程序(1).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
