PHP CLI 可直接运行脚本,适用于工具开发、定时任务等;需确保 php 命令可用,通过 php -v 验证,必要时配置 PATH 或安装 php-cli 包。
PHP 命令行(CLI)能直接运行脚本,不依赖 Web 服务器,适合写工具、定时任务、调试或自动化流程。只要系统装了 PHP,且 php 命令可用,就能执行。
很多系统自带 PHP,但 CLI 版本可能未启用或路径不对。先验证:
php -v
如果报 command not found 或版本过低,需检查:
- macOS 用户用 Homebrew 安装后,可能需要把 /opt/homebrew/bin 加入 $PATH
- Windows 用户要确认 PHP 目录(如 C:\php)是否在系统环境变量 PATH 中
- Linux(如 Ubuntu)可能需额外安装 php-cli 包:sudo apt install php-cli
CLI 模式下,php 命令默认以脚本模式运行文件,无需 开头也能执行(但推荐加上,避免语法歧义):
php script.php
常见注意事项:
- 脚
本中使用 $_SERVER['argv'] 获取命令行参数,$argv[0] 是脚本名,$argv[1] 起才是传入参数
- 不会自动加载 $_GET、$_POST 或 Cookie 相关变量
- echo 和 var_dump() 输出直接打印到终端,不经过 HTTP 头处理
- 若脚本含 exit(),CLI 会返回对应退出码,可用于 Shell 判断成功与否(如 if php test.php; then ...;)
适合快速测试或管道处理,用 -r 参数:
php -r "echo date('Y-m-d');"注意:
- -r 后面的代码**不加** 标签
- 若需多行,用分号分隔;引号需转义或套用单双层嵌套
- 不能用 -r 加载外部文件,要用 -f(如 php -f script.php)
- -r 执行失败时,PHP 不会输出 Parse Error 的详细位置,调试建议改用临时文件
CLI 使用独立的 php.ini 文件,和 Apache/FPM 的配置不共享:
php --ini
输出类似:Configuration File (php.ini) Path: /etc/php/8.2/cliLoaded Configuration File: /etc/php/8.2/cli/php.ini
这意味着:
- display_errors = On 在 CLI 下默认开启,错误直接输出,不用额外设置
- memory_limit 默认值常比 Web 模式高(如 -1 表示无限制),但若脚本耗内存大,仍建议显式设 ini_set('memory_limit', '512M');
- 扩展(如 pdo_mysql)需在 CLI 的 php.ini 中启用,否则 php -m | grep pdo 看不到
真正容易被忽略的是:有些框架(如 Laravel)的 Artisan 命令本质就是 CLI 脚本,但它们依赖特定的 autoloader 和环境配置;直接用 php artisan 运行没问题,但如果在脚本里用 require 引入 Artisan 入口却没初始化 Composer autoloader,就会报 Class not found —— 这类问题不是 CLI 本身的问题,而是执行上下文缺失造成的。
# php
# linux
# windows
# ubuntu
# 工具
# mac
# macos
# 环境变量
# win
# cos
# php脚本
# 自动化
# 会报
# 命令行
# 的是
# 就能
# 才是
# 也能
# 适用于
# 这类
# 要用
# 不能用
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
c++ atoi和atof函数用法_c++字符数组转数字
如何在JavaScript中动态拼接PHP的base_url与JS变量
如何在Golang中使用内置函数_Golanglen append make等使用技巧
Win11怎么设置系统还原_Windows11系统属性保护设置
Win11怎么关闭键盘按键音_Win11禁用打字声音反馈【教程】
Mac的访达(Finder)怎么用_Mac文件管理入门教程【详解】
Python多线程使用规范_线程安全解析【教程】
Python与MongoDB NoSQL开发实战_文档模型与索引优化
Python抽象类与接口设计_规范说明【指导】
c++如何用AFL++进行模糊测试 c++ Fuzzing入门【安全】
如何使用Golang实现文件加密_Golang crypto 文件加密示例
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Win11怎么更改任务栏位置_修改注册表将Win11任务栏置顶【教程】
Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程
Win10路由器怎么隐藏ssid Win10隐藏wifi名称设置【指南】
php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】
Windows音频驱动无声音原因解析_声卡驱动错误修复步骤
Win11怎么退出高对比度模式_Win11取消反色显示快捷键【修复】
c++如何获取map中所有的键_C++遍历键值对提取所有key的方法
Win11怎么关闭自动调节亮度 Win11禁用内容自适应亮度【设置】
Python网络日志追踪_请求定位解析【教程】
Win11怎么开启游戏模式_Win11优化游戏帧数性能【教程】
Win10怎样卸载自带Edge_Win10卸载Edge浏览器步骤【教程】
Windows10系统更新错误0x80070002_Win10自动更新失败手动修复
使用类变量定义字符串常量时如何实现类型安全的 Literal 注解
Win11时间格式怎么改成12小时制 Win11时间格式切换教程【步骤】
Win10文件历史记录怎么用 Win10开启自动备份文件教程【防丢】
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
Win11怎么关闭小组件_Win11禁用任务栏天气与小组件方法【设置】
Win11怎么设置应用分屏_Windows11贴靠布局Snap Layouts
Win11怎么查看电脑配置_Win11硬件配置详细查询方法【详解】
Win11右键反应慢怎么办 Win11优化右键菜单加载速度【技巧】
Windows Defender扫描失败怎么办_安全模块损坏修复方式
php8.4如何实现队列任务_php8.4redis队列简单实现方法【教程】
C++如何解析JSON数据?(nlohmann/json库示例)
Win11怎么关闭任务栏小图标_Windows11任务栏角溢出设置
c++怎么使用std::unique实现去重_c++ 容器元素排序与连续重复删除【教程】
php打包exe后无法写入文件_权限问题解决方法【教程】
微信企业付款回调PHP怎么接收_处理企业付款异步通知数据教程【教程】
如何使用正则表达式批量替换重复的星号-短横模式为固定字符串
MAC怎么在照片中添加水印_MAC自带编辑工具文字水印叠加【方法】
Windows10系统怎么查看IP地址_Win10网络连接状态详细信息
c++怎么设置线程优先级与cpu亲和性_c++ 多核处理器性能绑定【指南】
VSC怎么创建PHP项目_从零开始搭建项目的步骤【操作】
如何使用Golang实现路由参数绑定_使用Mux和Request解析路径变量
如何使用Golang实现微服务状态监控_Golang服务运行状态采集方法
Win10如何更改开机密码_Windows10登录选项更改密码
Win11如何更改任务栏颜色 Win11自定义任务栏背景色【美化】
如何使用Golang包导出规则_控制函数和变量可见性
c++怎么处理多线程死锁_c++ lock_guard与unique_lock锁管理【技巧】
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。