GNU/Linux下如何通过Shell/SSH命令查看PHP更新操作历史
GNU/Linux下查询PHP版本变更历史的方法
不存在跨所有发行版通用的独立命令,PHP的安装、升级、卸载操作全部由系统包管理器记录,根据你服务器使用的发行版对应查询包管理日志即可,以下是常见环境的操作方式:
- Debian/Ubuntu(dpkg/apt体系)
dpkg会留存所有软件包的操作明细日志,直接过滤PHP相关条目即可:grep -i "php" /var/log/dpkg.log*
如果历史日志已经被轮转压缩,直接用zgrep读取压缩包内容,不需要手动解压:zgrep -i "php" /var/log/dpkg.log*
输出内容会明确标注操作时间、操作类型(install安装/upgrade升级/remove卸载)、版本变更前后的具体值,升级记录会直接显示旧版本号 -> 新版本号的格式。如果只想看版本升级的记录,可以加过滤规则缩小范围:zgrep -i "upgrade.*php" /var/log/dpkg.log* - RHEL/CentOS/Rocky Linux/AlmaLinux/Fedora(yum/dnf体系)
- CentOS 6/7等使用yum的版本,直接查询yum日志:
grep -i "php" /var/log/yum.log* - CentOS 8+/RHEL8+/Fedora等使用dnf的版本,既可以查日志文件,也可以用dnf自带的历史命令查结构化记录:
先列出所有涉及PHP包的操作事务:dnf history list php
拿到返回结果里的事务ID后,查询对应事务的详细信息,包含操作时间、操作人、所有涉及包的版本前后变化:dnf history info <替换为实际查到的事务ID>
压缩的轮转日志同样可以用zgrep直接查询。
- CentOS 6/7等使用yum的版本,直接查询yum日志:
- 源码编译安装的PHP
包管理器不会留存操作记录,可以先查询PHP二进制文件的修改时间做初步判断:stat $(which php)
返回结果里的Modify字段就是当前PHP二进制文件最后一次被替换/修改的时间,如果当时编译安装时留存了编译目录、安装日志,可以到对应部署路径下找更详细的记录。
注意:如果服务器配置了日志定期清理策略,超过留存周期的操作记录会被删除,这种场景可以通过
php -v输出里的Build Date(编译时间)字段,和你已知的历史部署时间做交叉验证。
内容的提问来源于stack exchange,提问作者rikabetty
相关产品推荐
相关产品推荐

