php命令行怎么运行_通过CLI模式执行PHP脚本的步骤【说明】
技术百科
絕刀狂花
发布时间:2026-01-01
浏览: 次 PHP CLI 可直接运行脚本,适用于工具开发、定时任务等;需确保 php 命令可用,通过 php -v 验证,必要时配置 PATH 或安装 php-cli 包。
PHP 命令行(CLI)能直接运行脚本,不依赖 Web 服务器,适合写工具、定时任务、调试或自动化流程。只要系统装了 PHP,且 php 命令可用,就能执行。
确认 PHP CLI 是否已安装并可用
很多系统自带 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
用 php 命令执行 .php 文件
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 ...;)
直接运行内联 PHP 代码
适合快速测试或管道处理,用 -r 参数:
php -r "echo date('Y-m-d');"注意:
- -r 后面的代码**不加** 标签
- 若需多行,用分号分隔;引号需转义或套用单双层嵌套
- 不能用 -r 加载外部文件,要用 -f(如 php -f script.php)
- -r 执行失败时,PHP 不会输出 Parse Error 的详细位置,调试建议改用临时文件
CLI 模式与 Web 模式的配置差异
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 本身的问题,而是执行上下文缺失造成的。
# 自动化
# 的是
# 就能
# 这类
# 才是
# 也能
# windows
# 适用于
# 要用
# mac
# 命令行
# 工具
# win
# linux
# ubuntu
# 环境变量
# macos
# cos
# php
# 不能用
# 会报
# php脚本
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Python代码测试策略_质量保障解析【教程】
- Windows怎样关闭开始菜单广告_Windows
- Windows10如何更改鼠标灵敏度_Win10鼠
- Windows10怎么查看系统激活状态_Windo
- 如何解决同一段404代码在不同主机上表现不一致的问
- Win11怎么退出微软账户_切换Win11为本地账
- 如何用正则表达式精确匹配最多含一个换行符的起止片段
- php嵌入式需要什么环境_搭建php+linux嵌
- Python函数参数高级用法_默认值与可变参数解析
- 如何使用Golang操作指针变量_Golang解引
- Windows服务无法启动错误1067是什么_进程
- c++如何使用std::bitset进行位图算法_
- 如何在 PHP 单元测试中正确模拟带方法的图像处理
- 短链接还原php提示内存不足_调整PHP内存限制设
- 如何有效拦截拼接式恶意域名的垃圾信息
- 如何在Golang中实现文件下载_Golang文件
- C++中的Pimpl idiom是什么,有什么好处
- Python函数接口文档化_自动化说明【指导】
- Win10怎样设置多显示器_Win10多显示器扩展
- Win11怎么打开注册表_Windows 11注册
- 如何使用Golang benchmark测量函数延
- Linux如何挂载新硬盘_Linux磁盘分区格式化
- Win11如何设置省电模式 Win11开启电池节电
- Windows10系统怎么查看系统版本_Win10
- Win11怎么关闭右下角弹窗_Win11拦截系统通
- Win11 C盘满了怎么清理 Win11磁盘清理和
- Mac电脑进水了怎么办_MacBook进水后紧急处
- 获取 PHP 文件最后修改时间的正确方法
- Python对象生命周期管理_创建销毁解析【教程】
- Mac如何查看电池健康百分比_Mac系统信息电源检
- Win11怎么关闭定位服务 Win11禁止应用获取
- Win11怎么关闭键盘按键音_Win11禁用打字声
- Win11怎么查看激活状态_查询Windows 1
- PythonFastAPI项目实战教程_API接口
- 如何在Golang中实现RPC异步返回_Golan
- Win11怎么开启上帝模式_创建Windows 1
- Windows 10怎么隐藏特定更新补丁_Wind
- MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第
- Python装饰器设计思路_功能增强机制说明【指导
- Win11如何更改用户账户文件夹名称 Win11修
- Win11玩游戏全屏闪退怎么办_Win11全屏优化
- Python文件操作优化_大文件与流处理解析【教程
- Windows驱动无法加载错误解决方法_驱动签名验
- c++中的CRTP是什么 c++奇异递归模板模式【
- php订单日志怎么记录发货_php记录订单发货操作
- 如何在Golang中配置代码格式化工具_使用gof
- Mac系统更新下载慢或失败怎么办_解决macOS升
- Win10怎样安装PPT模板_Win10安装PPT
- Win11怎么关闭应用权限_Windows11相机
- Windows10如何查看蓝屏日志_Win10使用

QQ客服