如果您使用过 PHP,您就会发现它是创建特性丰富的 Web 页面的出色工具。作为一大脚本语言,PHP:容易学习吗。

有许多强大的框架(比如 CakePHP 和 CodeIgniter),让您能够像 Rails 程序员一样高效。

能够与 MySQL、PostgreSQL、Microsoft? SQL Server,甚至 Oracle 通信。

能够轻松地与 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/shnumber_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() 中运行相同的命令

达内终端端mysql命令_达内推荐:在PHP中使用命令行工具(一)相关推荐

  1. shell脚本中执行命令_如何在Shell脚本中执行命令?

    shell脚本中执行命令 Shell is a command-line interpreter that allows the user to interact with the system. I ...

  2. 达内终端端mysql命令_如何从Windows命令行启动MySQL

    要想从命令行启动mysqld服务器,你应当启动控制台窗口(或DOS window)并输入命令: C: C:Program FilesMySQLMySQL Server 5.0binmysqld 根据系 ...

  3. 达内终端端mysql命令_MySQL数据库的常用命令

    我们都对MySQL 数据库有所耳闻,比较它是市场主流数据库,因此,无论是学习Python还是Java都必学MySQL,本文笔者先来介绍一下MySQL 常用操作命令. create database n ...

  4. php mate,textmate 命令行_使用PHP在TextMate中创建命令

    textmate 命令行_使用PHP在TextMate中创建命令 textmate 命令行_使用PHP在TextMate中创建命令 textmate 命令行 TextMate is the best ...

  5. sudo dpkg 找不到命令_【干货】Linux中实用但很小众的11个炫酷终端命令

    关注我,你的眼睛会怀孕 今天给大家分享Linux总结出来的11个炫酷的Linux终端命令大全,通过今天这篇文章将向大家展示一系列的Linux命令.工具和技巧,我希望一开始就有人告诉我这些,而不是曾在我 ...

  6. 一键换ip命令_软网推荐:高效命令行备份更简单

    系统使用一段时间后会生成各种数据,如硬件驱动.软件设置.Wi-Fi密码等.我们需要经常备份这些信息,导出驱动备份方便重装系统后快速识别硬件,导出系统信息方便查看电脑具体配置等等.不过手动备份这些数据费 ...

  7. mysql隐藏密码_MySQL在Linux系统中隐藏命令行中的密码的方法

    在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?, ...

  8. 检查集群状态命令_轻松管理Kubernetes集群的7个工具

    Kubernetes正在不断加快在云原生环境的应用,但如何以统一.安全的方式对运行于任何地方的Kubernetes集群进行管理面临着挑战,而有效的管理工具能够大大降低管理的难度. K9s k9s是基于 ...

  9. debian查看ip地址命令_鲜为人知而又实用的 Linux 命令大全

     点击"Cisco思科CCIE俱乐部"→点击右上角"..."→"设为星标"   资讯丨干货丨入群 联系小E微信:SPOTO123456 Li ...

最新文章

  1. 找论文太难?试试这款「文本生成」论文搜索工具
  2. 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定...
  3. python matplotlib散点图-python-Matplotlib散点图图例
  4. 《c语言从入门到精通》看书笔记——第14章 文件
  5. 微信小程序小结(3) -- 使用wxParse解析html及多数据循环
  6. linux查看镜像的详细信息,docker inspect命令查看镜像详细信息
  7. sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别
  8. 使用thinkPHP做注册程序的实例
  9. 星际通讯+基于区块链的价值共享互联网即时通讯应用平台
  10. jQuery框架学习第七天:jQuery动画–jQuery让页面动起来!
  11. Delphi 的绘图功能[9] - TextRect
  12. python运行游戏是否需要pygame_用Python和Pygame写游戏-从入门到放弃(1)
  13. C++11 新关键字
  14. (转)C# Enum,Int,String的互相转换 枚举转换
  15. 可视化h5界面编辑器_超优秀 H5可视化制作编辑器H5DS
  16. js实现网页在线聊天功能(四)
  17. 2019CBA选秀大会最终结果
  18. 厦门大学计算机系夏令营考什么,2018年厦门大学全校33个学院保研夏令营信息汇总,读研不止一条路...
  19. 整理各种模板(准备随时弃坑)
  20. NLP- 关键词提取 - 综述

热门文章

  1. Mac OS X 10.10 Yosemite下面解决XAMPP无法开启mysql的问题
  2. 华三路由追踪命令 tracert详解
  3. 不装了,我摊牌了,我来拿勋章的
  4. python自动回复qq消息_基于python使用qqbot接入qq做一个简单的文字消息自动回复
  5. 【代码学习】批量提取论文(pdf)的第一页
  6. java8 stream 两个不同对象list取差集
  7. 获取网址的ico/favicon的两种方法
  8. 理论基础 —— 二叉树 —— 二叉链表
  9. Linux系统调优详解(三)——CPU状态查看相关命令
  10. PHP设计模式之装饰者模式:钢铁侠的战衣逐步升级