当前位置: 首页 > news >正文

PHP 命令行工具的常用选项详解

 PHP CLI 常用选项详解

-f <file>:运行脚本文件

php -f script.php

等同于:

php script.php

执行指定的 PHP 文件。


-r <code>:运行一段 PHP 代码

php -r 'echo "Hello World\n";'

可快速运行一小段代码,不需要加 <?php 标签。


-a:交互式模式(Interactive Shell)

php -a

启动一个 REPL(读取-执行-打印-循环)环境,适合测试代码片段。


-S <addr>:<port>:启动内建 Web 服务器

php -S 127.0.0.1:8000

用于开发环境调试,默认当前目录为文档根目录(可配合 -t 使用)。


-t <docroot>:指定 Web 根目录

php -S localhost:8000 -t public/

配合 -S 使用,设定文档根目录。


-c <path>|<file>:指定 php.ini 路径

php -c /etc/php/8.1/cli/php.ini script.php

用于指定 PHP 的配置文件路径。


-n:忽略所有配置文件(不加载 php.ini

php -n -r 'phpinfo();'

完全跳过配置文件的加载,适用于安全测试或环境隔离。


-d foo[=bar]:临时设置配置项

php -d display_errors=On -d error_reporting=E_ALL script.php

在运行脚本时设置 php.ini 配置项。


-i:显示完整的 PHP 配置信息

php -i

相当于执行 phpinfo(),可以用于查看环境和扩展等信息。


-m:列出已加载模块(扩展)

php -m

可查看已启用的扩展模块,例如 curl, mbstring, pdo 等。


-l:只进行语法检查(Lint)

php -l script.php

检查脚本语法,不执行任何代码。常用于 CI 自动检查。


-v:显示 PHP 版本信息

php -v

显示当前 CLI 使用的 PHP 版本和 Zend 引擎版本。


--ini:查看配置文件位置

php --ini

显示当前加载的 php.ini 文件和额外配置路径。


-B/-E/-R/-F:流处理相关选项(高级用法)

  • -R <code>:对每一行输入执行一次 PHP 代码。

  • -F <file>:对每一行输入执行 PHP 文件。

  • -B <code>:在处理前执行的初始化代码。

  • -E <code>:在处理完所有行后执行的结束代码。

示例:

cat names.txt | php -R 'echo strtoupper($argn)."\n";'

对输入的每一行执行 strtoupper()


-z <file>:加载 Zend 扩展

php -z /path/to/xdebug.so

用于动态加载 .so 格式的 Zend 扩展。


--rf/--rc/--re/--ri:查看函数/类/扩展信息

php --rf strlen         # 查看函数 strlen 的信息
php --rc DateTime       # 查看 DateTime 类的结构
php --re json           # 查看 json 扩展
php --ri curl           # 查看 curl 扩展的配置

适用于代码分析、调试和学习标准库。


✅ 常见组合示例

  1. 启动 Web 服务调试项目:

php -S 0.0.0.0:8080 -t public
  1. 快速测试代码片段:

php -r 'echo date("Y-m-d H:i:s");'
  1. 调试错误时开启显示:

php -d display_errors=1 script.php
  1. 只检查语法是否正确:

php -l your_script.php

http://www.dtcms.com/a/264765.html

相关文章:

  • 图像二值化方法及 Python OpenCV 实现
  • 深度剖析NumPy核心函数reshape()
  • 香港券商交易系统开发与解决方案全景报告:云原生、跨境协同与高性能架构的创新实践
  • qt-- 学习笔记11(mingw编译,windeployqt生成执行文件exe,同一exe文件不同文件夹结果不同)
  • 分布式定时任务:Elastic-Job-Lite
  • P3842 [TJOI2007] 线段(动态规划)
  • RAC (ReactiveCocoa) 的实现机制与消息传递策略
  • XILINX Kintex 7系列FPGA的架构
  • ubentu服务器版本安装Dify
  • 【leetcode算法300】:哈希板块
  • 多项式带余除法——线性代数题目为例
  • 【.NET Framework 窗体应用程序项目结构介绍】
  • WHAT - React Native 中 Light and Dark mode 深色模式(黑暗模式)机制
  • 如何在Excel中每隔几行取一行
  • 【PMP】项目管理入门:从基础到环境的体系化拆解
  • 分布式定时任务:xxl-job
  • 苍穹外卖day12--Apache POI导出Excel报表
  • [MIA 2025]CLIP in medical imaging: A survey
  • 多云密钥统一管理实战:CKMS对接阿里云/华为云密钥服务
  • .npmrc和.yarnrc配置文件介绍:分别用于 Node.js 中的 npm(Node Package Manager)和 Yarn 包管理工具
  • oracle集合三嵌套表(Nested Table)学习
  • 【第三章:神经网络原理详解与Pytorch入门】01.神经网络算法理论详解与实践-(1)神经网络预备知识(线性代数、微积分、概率等)
  • 微控制器中的EXTI0(External Interrupt 0)中断是什么?
  • uniapp socket 封装 (可拿去直接用)
  • 可编辑33页PPT | 某材料制造企业工业互联网平台解决方案
  • 云原生环境下部署大语言模型服务:以 DeepSeek 为例的实战教程
  • 6种iOS开发中常用的设计模式
  • Qt designer坑-布局内子控件的顺序错乱
  • 量化交易学习之自动化交易策略 [freqtrade 框架学习] ,常见问题避坑指南!!!!
  • <u>#12288;#8203;</u> HTML5全角空格,自动换行,半角用#32;#8203;