PHP 语法检查命令 php -l “$file“ > /dev/null 2>&1;

用户想了解 if php -l "$file" > /dev/null 2>&1; then 这行 bash 脚本的意思。我需要解释清楚每个部分的含义。

这行脚本是 PHP 语法检查命令,让我拆解说明:

bash 复制代码
if php -l "$file" > /dev/null 2>&1; then
部分 含义
php -l PHP 的 lint 模式,只检查语法不执行代码
"$file" 要检查的 PHP 文件路径
> /dev/null 标准输出(正常信息)重定向到黑洞,即不显示
2>&1 错误输出(2)重定向到标准输出(1),即错误也不显示
if ...; then 如果命令执行成功(返回 0),则执行 then 后面的代码

简单理解

bash 复制代码
# 检查 application/route.php 有没有语法错误
if php -l "application/route.php" > /dev/null 2>&1; then
    echo "语法正确"
else
    echo "语法错误"
fi

实际效果对比

不加隐藏输出:

bash 复制代码
$ php -l application/route.php
No syntax errors detected in application/route.php

加了 > /dev/null 2>&1

bash 复制代码
$ php -l application/route.php > /dev/null 2>&1
$  # 没有任何输出,只返回成功/失败状态

在脚本中的作用

bash 复制代码
for file in "${PHP_FILES[@]}"; do
    if php -l "$file" > /dev/null 2>&1; then
        echo "[OK] $file"      # 语法正确,显示绿色 OK
    else
        echo "[FAIL] $file 语法错误"  # 语法错误,显示红色 FAIL
        exit 1                  # 退出部署
    fi
done

总结:这行代码静默检查 PHP 文件语法,正确就继续,错误就停止部署。

相关推荐
老迟到的茉莉14 小时前
Hermes 是谁?跟 Claude Code 差在哪
开发语言·python
学逆向的14 小时前
汇编——内存
开发语言·汇编·算法·网络安全
lbb 小魔仙15 小时前
MuMu 模拟器 6.0 硬核测评:这次升级确实不一样
java·开发语言·模拟器·mumu·硬核测评
r_oo_ki_e_15 小时前
Java 线程池
java·开发语言
杜子不疼.15 小时前
【Qt初识】信号槽(二):自定义信号函数与槽函数
开发语言·qt
ctrl_v助手16 小时前
C#日志工具类log4net的使用
开发语言·c#
秋田君16 小时前
Qt_QVariant
开发语言·qt
江华森16 小时前
Python 实现高德地图找房(三):地图可视化与高德 JS API
开发语言·javascript·python
weixin_4713830316 小时前
args,...args与Parameters<T>
开发语言·前端
用户30745969820716 小时前
GatewayWorker 从零到一完整指南
javascript·php