在Linux系统中查询PHP版本信息是日常开发和服务器维护中的常见需求,根据PHP的安装方式(如源码编译、包管理器安装、多版本共存等)和运行环境(CLI模式、Web服务器模式),有多种查询方法,以下是详细的操作步骤和适用场景分析,帮助用户准确获取PHP版本信息。
命令行直接查询(CLI模式)
PHP命令行接口(CLI)是Linux系统中常用的PHP运行模式,通过终端命令可以直接查询版本信息,这是最快捷的方式。
使用 php -v
命令
命令格式:
php -v
适用场景:
当PHP已通过系统包管理器(如apt
、yum
)或源码编译安装,且PHP可执行文件在系统PATH
环境变量中时,此命令可直接生效。
输出示例:
PHP 8.1.2 (cli) (built: Jan 12 2023 10:20:30) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies
说明:
- 第一行显示PHP版本(如
1.2
)、运行模式(cli
为命令行,fpm
为FastCGI)及编译时间; - 第二行为版权信息;
- 第三行为Zend引擎版本(PHP核心执行引擎)。
处理命令不存在的情况
若执行php -v
提示command not found
,可能原因包括:
- 未安装PHP CLI:部分系统默认只安装Web服务器模式的PHP(如PHP-FPM),需单独安装CLI版本。
- Ubuntu/Debian系统:
sudo apt install php-cli
- CentOS/RHEL系统:
sudo yum install php-cli
(需先安装EPEL源)
- Ubuntu/Debian系统:
- PHP未添加到PATH:若通过源码编译安装PHP,可执行文件可能位于
/usr/local/php/bin
等自定义路径,需临时指定路径执行:/usr/local/php/bin/php -v
或将PHP路径添加到
~/.bashrc
/~/.bash_profile
环境变量中,永久生效。
查询多版本PHP
若系统共存多个PHP版本(如PHP 7.4和PHP 8.1),包管理器安装的通常会生成版本化命令(如php7.4 -v
、php8.1 -v
),可通过以下方式确认:
- Ubuntu/Debian:
ls /usr/bin/php*
- CentOS/RHEL:
ls /usr/bin/php*
或ls /usr/local/bin/php*
执行对应版本命令即可,php8.1 -v # 查询PHP 8.1版本 php7.4 -v # 查询PHP 7.4版本
Web环境查询(服务器模式)
当PHP运行在Web服务器(如Apache、Nginx)中时,需通过浏览器或Web脚本查询版本信息,适合确认服务器实际运行的PHP版本。
使用 phpinfo()
函数
操作步骤:
- 在Web服务器根目录(如
/var/www/html
)创建一个PHP文件,例如info.php
; 写入:<?php phpinfo(); ?>
- 保存后通过浏览器访问
http://服务器IP/info.php
,页面将显示PHP的详细配置信息。
关键信息位置:
在页面顶部“PHP Version”字段可直接查看版本(如“PHP Version 8.1.2”),同时可查看加载的扩展、配置文件路径等。
注意事项:
- 查询完成后需删除
info.php
文件,避免泄露服务器敏感信息(如路径、扩展配置等); - 若Web服务器未正确配置PHP解析,需检查模块加载情况(如Apache的
mod_php
或Nginx的php-fpm
)。
通过 php -i
查看配置信息(CLI模式)
若无法访问Web环境,可通过CLI模式输出PHP配置信息并过滤版本号:
php -i | grep "PHP Version"
输出示例:
PHP Version => 8.1.2
此方法适合脚本化处理或快速获取版本号,无需输出完整配置信息。
配置文件查询
PHP的配置文件php.ini
中可能包含版本相关线索,但需结合其他命令定位文件路径。
定位 php.ini
路径
执行以下命令获取当前PHP使用的配置文件路径:
php --ini
输出示例:
Configuration File (php.ini) Path: /etc/php/8.1/cli Loaded Configuration File: /etc/php/8.1/cli/php.ini Scan for additional .ini files in: /etc/php/8.1/cli/conf.d
说明:
- 第一行为
php.ini
的目录路径; - 第二行为当前加载的
php.ini
完整路径。
检查 php.ini
打开php.ini
文件(需root权限),通过搜索PHP
或version
定位版本信息,但通常php.ini
中不直接存储版本号,需结合php -v
或phpinfo()
确认。
包管理器查询(适用于系统安装的PHP)
若PHP通过系统包管理器(apt
、yum
等)安装,可通过查询已安装包列表获取版本信息。
Ubuntu/Debian 系统(使用 dpkg
)
dpkg -l | grep php
输出示例:

ii php8.1-cli 8.1.2-1ubuntu2.1 amd64 command-line interpreter for the PHP scripting language
ii php8.1-fpm 8.1.2-1ubuntu2.1 amd64 PHP's FastCGI Process Manager
说明:
- 第一列
ii
表示包已正确安装;
- 第二列为包名(如
php8.1-cli
表示PHP 8.1的CLI版本);
- 第三列为版本号(如
1.2-1ubuntu2.1
)。
CentOS/RHEL 系统(使用 rpm
)
rpm -qa | grep php
输出示例:
php-cli-8.1.2-1.el8.remi.x86_64
php-fpm-8.1.2-1.el8.remi.x86_64
说明:包名格式与Debian不同,但版本号位于中间位置(如1.2
)。
不同查询方法的对比总结
为方便用户选择合适的方法,以下通过表格对比各查询方式的特点:
方法类别
具体命令/操作
适用场景
优点
缺点
命令行CLI查询
php -v
、php7.4 -v
快速查询CLI模式版本,多版本共存场景
简单快捷,无需依赖Web环境
需确认PHP CLI已安装
Web环境查询
创建phpinfo()
文件访问浏览器
确认Web服务器实际运行的PHP版本
信息全面,可查看扩展和配置
需Web环境支持,需临时创建文件
配置信息过滤
php -i | grep "PHP Version"
脚本化处理或快速获取版本号
输出简洁,适合自动化
需熟悉命令行管道操作
包管理器查询
dpkg -l | grep php
、rpm -qa | grep php
查询系统通过包管理器安装的PHP版本包
可确认安装的包版本
无法直接显示运行时版本
相关问答FAQs
问题1:为什么执行 php -v
提示 “command not found”?
解答:
出现该错误通常有两个原因:
- 未安装PHP CLI:部分Linux系统默认只安装Web服务器模式的PHP(如PHP-FPM),需单独安装CLI版本。
- Ubuntu/Debian:
sudo apt update && sudo apt install php-cli
- CentOS/RHEL:
sudo yum install php-cli
(需先配置EPEL或Remi源)
- PHP未添加到PATH:若通过源码编译安装PHP,可执行文件可能位于自定义路径(如
/usr/local/php/bin
),需临时指定路径执行:
/usr/local/php/bin/php -v
或将PHP路径添加到~/.bashrc
环境变量中(执行echo 'export PATH=/usr/local/php/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
)。
问题2:如何确认Web服务器(如Nginx)使用的PHP版本不是CLI版本?
解答:
Web服务器(如Nginx)通常通过PHP-FPM或FastCGI模式运行PHP,其版本可能与CLI版本不同,可通过以下方式确认:
- 通过
phpinfo()
查询:在Web根目录创建info.php
为<?php phpinfo(); ?>
),浏览器访问后查看“PHP Version”字段,该版本即为Web服务器实际运行的PHP版本。
- 检查PHP-FPM配置:PHP-FPM的配置文件(如
/etc/php/8.1/fpm/php-fpm.conf
或/etc/php/8.1/fpm/pool.d/www.conf
)中会指定执行的PHP路径,可通过以下命令查看:
grep "php-fpm" /etc/nginx/sites-enabled/default # 查看Nginx配置中的PHP-FPM路径
或直接查看PHP-FPM版本:
php-fpm8.1 -v # 若PHP-FPM版本化命令存在
- 使用
ps
命令查看进程:执行ps aux | grep php-fpm
,查看PHP-FPM进程的启动路径,
www-data 1234 0.0 0.5 40228 21004 ? Ss 10:00 0:00 php-fpm: www process (stream=sock, role=Worker)
若路径中包含php8.1
,则说明运行的是PHP 8.1版本的FPM。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34053.html
打开php.ini
文件(需root权限),通过搜索PHP
或version
定位版本信息,但通常php.ini
中不直接存储版本号,需结合php -v
或phpinfo()
确认。
包管理器查询(适用于系统安装的PHP)
若PHP通过系统包管理器(apt
、yum
等)安装,可通过查询已安装包列表获取版本信息。
Ubuntu/Debian 系统(使用 dpkg
)
dpkg -l | grep php
输出示例:
ii php8.1-cli 8.1.2-1ubuntu2.1 amd64 command-line interpreter for the PHP scripting language ii php8.1-fpm 8.1.2-1ubuntu2.1 amd64 PHP's FastCGI Process Manager
说明:
- 第一列
ii
表示包已正确安装; - 第二列为包名(如
php8.1-cli
表示PHP 8.1的CLI版本); - 第三列为版本号(如
1.2-1ubuntu2.1
)。
CentOS/RHEL 系统(使用 rpm
)
rpm -qa | grep php
输出示例:
php-cli-8.1.2-1.el8.remi.x86_64 php-fpm-8.1.2-1.el8.remi.x86_64
说明:包名格式与Debian不同,但版本号位于中间位置(如1.2
)。
不同查询方法的对比总结
为方便用户选择合适的方法,以下通过表格对比各查询方式的特点:
方法类别 | 具体命令/操作 | 适用场景 | 优点 | 缺点 |
---|---|---|---|---|
命令行CLI查询 | php -v 、php7.4 -v |
快速查询CLI模式版本,多版本共存场景 | 简单快捷,无需依赖Web环境 | 需确认PHP CLI已安装 |
Web环境查询 | 创建phpinfo() 文件访问浏览器 |
确认Web服务器实际运行的PHP版本 | 信息全面,可查看扩展和配置 | 需Web环境支持,需临时创建文件 |
配置信息过滤 | php -i | grep "PHP Version" |
脚本化处理或快速获取版本号 | 输出简洁,适合自动化 | 需熟悉命令行管道操作 |
包管理器查询 | dpkg -l | grep php 、rpm -qa | grep php |
查询系统通过包管理器安装的PHP版本包 | 可确认安装的包版本 | 无法直接显示运行时版本 |
相关问答FAQs
问题1:为什么执行 php -v
提示 “command not found”?
解答:
出现该错误通常有两个原因:
- 未安装PHP CLI:部分Linux系统默认只安装Web服务器模式的PHP(如PHP-FPM),需单独安装CLI版本。
- Ubuntu/Debian:
sudo apt update && sudo apt install php-cli
- CentOS/RHEL:
sudo yum install php-cli
(需先配置EPEL或Remi源)
- Ubuntu/Debian:
- PHP未添加到PATH:若通过源码编译安装PHP,可执行文件可能位于自定义路径(如
/usr/local/php/bin
),需临时指定路径执行:/usr/local/php/bin/php -v
或将PHP路径添加到
~/.bashrc
环境变量中(执行echo 'export PATH=/usr/local/php/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
)。
问题2:如何确认Web服务器(如Nginx)使用的PHP版本不是CLI版本?
解答:
Web服务器(如Nginx)通常通过PHP-FPM或FastCGI模式运行PHP,其版本可能与CLI版本不同,可通过以下方式确认:
- 通过
phpinfo()
查询:在Web根目录创建info.php
为<?php phpinfo(); ?>
),浏览器访问后查看“PHP Version”字段,该版本即为Web服务器实际运行的PHP版本。 - 检查PHP-FPM配置:PHP-FPM的配置文件(如
/etc/php/8.1/fpm/php-fpm.conf
或/etc/php/8.1/fpm/pool.d/www.conf
)中会指定执行的PHP路径,可通过以下命令查看:grep "php-fpm" /etc/nginx/sites-enabled/default # 查看Nginx配置中的PHP-FPM路径
或直接查看PHP-FPM版本:
php-fpm8.1 -v # 若PHP-FPM版本化命令存在
- 使用
ps
命令查看进程:执行ps aux | grep php-fpm
,查看PHP-FPM进程的启动路径,www-data 1234 0.0 0.5 40228 21004 ? Ss 10:00 0:00 php-fpm: www process (stream=sock, role=Worker)
若路径中包含
php8.1
,则说明运行的是PHP 8.1版本的FPM。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34053.html