如何检查并打印 Linux / Unix 服务器上安装的 PHP 版本
PHP 是一种服务器端编程语言,通常与 Apache 或 Nginx 或 Lighttpd 服务器一起使用。WordPress、MediaWiki 等热门应用程序需要 PHP。让我们看看如何检查和打印Linux 或 Unix 服务器上安装的 PHP 版本。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 命令 |
先决条件 | PHP |
操作系统兼容性 | AIX • Alma • Alpine • Amazon Linux • Arch • BSD • CentOS • Debian • Fedora • FreeBSD • HP-UX • Linux • macOS • Mint • NetBSD • OpenBSD • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • Unix • WSL |
预计阅读时间 | 8 分钟 |
检查 Linux 和 Unix 服务器上安装的 PHP 版本
要打印服务器上安装的 PHP 版本,请在服务器上输入以下任一命令。
- 打开终端提示符,然后输入以下命令。
- 使用 ssh 命令登录远程服务器。例如:ssh user@linux-unix-server-ip
- 要检查 PHP 版本,请运行:php --version或php-cgi --version
- 要打印 PHP 7 版本,请输入:php7 --version或php7-cgi --version
- 查找最新的 PHP 8 版本,输入:php8 --version或php8-cgi --version
- 可以使用 Docker 或 LXD 等 Linux 容器检查 PHP 版本,请尝试:lxc exec app1 -- /usr/bin/php -v
- 您使用 php-fpm 吗?使用php-fmp -v或php-fpm73 -v命令获取 php 版本。
让我们详细查看所有命令和示例来检查 php 版本。
如何使用 CLI 检查 PHP 版本
从 Linux 和 Unix 命令行打印 PHP 版本的最可靠方法是键入以下命令:
$ php --version
来自我的 SUSE Enterprise/OpenSUSE Linux 服务器的输出:
PHP 7.4.6 (cli) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies
下面是另一个输出,表明我在较旧的 RHEL 服务器上使用 PHP 5.x:
$ php -v
请注意,我使用了-vlong 而不是--version:
PHP 5.3.3 (cgi-fcgi) (built: Jun 25 2012 04:38:39) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
此网站本身使用的是 PHP 版本 8.xx。检查 PHP 版本的方法如下:
$ php -v
## or ##
$ php81 -v
PHP 8.1.6 (cli) (built: May 24 2022 21:16:15) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.6, Copyright (c) Zend Technologies with Zend OPcache v8.1.6, Copyright (c), by Zend Technologies
帮助,我收到 php 命令未找到错误
尝试使用 type 命令或 command 命令来定位精确路径。例如:
另一个选项是使用 find 命令,如下所示:输出:
$ type php
$ type php7
$ type php8
$ type php82
$ type php81
$ command -V php
$ find / -type f -name "*php*"
$ find /opt /usr/bin /bin /usr/local/bin /usr/local/sbin -type f -name "*php*"
$ find /opt /usr/bin /bin /usr/local/bin /usr/local/sbin -type f -name "*php*" -ls
/usr/bin/php82
记下完整路径 /usr/bin/php82 并输入:
$ /usr/bin/php82 -v
看来我的 Linux 容器使用 PHP 版本 8.2.6:
PHP 8.2.6 (cli) (built: May 10 2023 05:42:02) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.6, Copyright (c) Zend Technologies with Zend OPcache v8.2.6, Copyright (c), by Zend Technologies
从 CLI 获取 PHP 信息
传递-i给你的 php 二进制文件。例如:
$ php -i
$ php -i | more
# see if PHP pdo module loaded or not #
$ php -i | grep pdo
phpinfo() PHP Version => 7.4.3 System => Linux example-wks01 5.4.0-62-generic #70-Ubuntu SMP Tue Jan 12 12:45:47 UTC 2021 x86_64 Build Date => Oct 6 2020 15:47:56 Server API => Command Line Interface Virtual Directory Support => disabled Configuration File (php.ini) Path => /etc/php/7.4/cli Loaded Configuration File => /etc/php/7.4/cli/php.ini Scan this dir for additional .ini files => /etc/php/7.4/cli/conf.d Additional .ini files parsed => /etc/php/7.4/cli/conf.d/10-opcache.ini, /etc/php/7.4/cli/conf.d/10-pdo.ini, /etc/php/7.4/cli/conf.d/20-calendar.ini, /etc/php/7.4/cli/conf.d/20-ctype.ini, /etc/php/7.4/cli/conf.d/20-exif.ini, /etc/php/7.4/cli/conf.d/20-ffi.ini, /etc/php/7.4/cli/conf.d/20-fileinfo.ini, /etc/php/7.4/cli/conf.d/20-ftp.ini, /etc/php/7.4/cli/conf.d/20-gettext.ini, /etc/php/7.4/cli/conf.d/20-iconv.ini, /etc/php/7.4/cli/conf.d/20-json.ini, /etc/php/7.4/cli/conf.d/20-phar.ini, /etc/php/7.4/cli/conf.d/20-posix.ini, /etc/php/7.4/cli/conf.d/20-readline.ini, /etc/php/7.4/cli/conf.d/20-shmop.ini, /etc/php/7.4/cli/conf.d/20-sockets.ini, /etc/php/7.4/cli/conf.d/20-sysvmsg.ini, /etc/php/7.4/cli/conf.d/20-sysvsem.ini, /etc/php/7.4/cli/conf.d/20-sysvshm.ini, /etc/php/7.4/cli/conf.d/20-tokenizer.ini PHP API => 20190902 PHP Extension => 20190902 Zend Extension => 320190902 Zend Extension Build => API320190902,NTS PHP Extension Build => API20190902,NTS Debug Build => no Thread Safety => disabled Zend Signal Handling => enabled Zend Memory Manager => enabled Zend Multibyte Support => disabled IPv6 Support => enabled DTrace Support => available, disabled Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3 Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.* This program makes use of the Zend Scripting Language Engine: Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
使用基于docker的php应用程序时查找php版本
首先找到一个Docker容器的名称,运行:
然后运行php –version,如下所示:
$ docker ps
$ docker ps | grep 'wpblog'
$ docker exec {container-name} php --version
$ docker exec {container-name} php7 --version
$ docker exec {container-name} php8 --version
使用 phpinfo() 函数确定 PHP 版本
有时我们无法通过 shell 访问生产 Web 服务器。在这种情况下,查找 PHP 版本的最可靠方法是使用 phpinfo()。在桌面上创建如下 php 脚本 (myversion.php):
<?php // program to tell php version using ftp/sftp client phpinfo(); ?>
使用 ftp/sftp 客户端上传上述文件并输入 url:
https://your-domain-name-here/myversion.php
或
https://your-domain-name-here/path/to/myversion.php
图 01:我在我的 Unix / Linux / Windows 服务器上运行的是哪个版本的 PHP?
<html> <head> <title>PHP version</title> </head> <body> <h1>PHP version</h1> <?php echo 'Current PHP version on this box: ' . phpversion(); ?> </body> </html>
使用包管理器在 Linux 上查找 PHP 版本
在基于 RHEL / Red Hat / CentOS / Fedora Linux 的系统上键入以下 dnf 命令 / yum 命令来查找 php 版本:
$ yum info php
我的 CentOS 8 Linux 服务器运行 PHP 版本 7.4.14:
Last metadata expiration check: 1:21:08 ago on Thu Jan 14 07:02:15 2021. Available Packages Name : php Version : 7.4.14 Release : 1.el8.remi Architecture : x86_64 Size : 3.0 M Source : php-7.4.14-1.el8.remi.src.rpm Repository : remi-modular Summary : PHP scripting language for creating dynamic web sites URL : http://www.php.net/ License : PHP and Zend and BSD and MIT and ASL 1.0 and NCSA Description : PHP is an HTML-embedded scripting language. PHP attempts to make it : easy for developers to write dynamically generated web pages. PHP also : offers built-in database integration for several commercial and : non-commercial database management systems, so writing a : database-enabled webpage with PHP is fairly simple. The most common : use of PHP coding is probably as a replacement for CGI scripts. : : The php package contains the module (often referred to as mod_php) : which adds support for the PHP language to Apache HTTP Server.
我们可以使用 rpm 命令列出以下软件包:
$ rpm -qa | grep php
如果您使用的是基于 Debian / Ubuntu Linux 的系统,请键入以下命令来查找 php 版本:
$ dpkg --list | grep php
示例输出表明为 Apache 安装的 PHP 名为 mod_php5 版本 5.3.3:
ii libapache2-mod-php5 5.3.3-7+squeeze14 server-side, HTML-embedded scripting language (Apache 2 module) ii php5 5.3.3-7+squeeze14 server-side, HTML-embedded scripting language (metapackage) ii php5-cgi 5.3.3-7+squeeze14 server-side, HTML-embedded scripting language (CGI binary) ii php5-cli 5.3.3-7+squeeze14 command-line interpreter for the php5 scripting language ii php5-common 5.3.3-7+squeeze14 Common files for packages built from the php5 source ii php5-gd 5.3.3-7+squeeze14 GD module for php5 ii php5-mysql 5.3.3-7+squeeze14 MySQL module for php5 ii php5-suhosin 0.9.32.1-1 advanced protection module for php5
让我们再试一次:
$ dpkg --list | grep php
来自 Ubuntu Linux 服务器的另一个输出显示使用 fmp(FastCGI 进程管理器)模式为 Nginx 安装了 PHP 版本 7.x:
ii php-common 1:35ubuntu6 all Common files for PHP packages ii php-igbinary 1.2.1-10-ge0e66b9+1.2.1-2 amd64 igbinary PHP serializer ii php-memcached 2.2.0-51-ge573a6e+2.2.0-2build2 amd64 memcached extension module for PHP5, uses libmemcached ii php-msgpack 2.0.1+0.5.7-1 amd64 PHP extension for interfacing with MessagePack ii php-pear 1:1.10.1+submodules+notgz-6 all PEAR Base System ii php7.0 7.0.18-0ubuntu0.16.04.1 all server-side, HTML-embedded scripting language (metapackage) ii php7.0-cli 7.0.18-0ubuntu0.16.04.1 amd64 command-line interpreter for the PHP scripting language ii php7.0-common 7.0.18-0ubuntu0.16.04.1 amd64 documentation, examples and common module for PHP ii php7.0-curl 7.0.18-0ubuntu0.16.04.1 amd64 CURL module for PHP ii php7.0-fpm 7.0.18-0ubuntu0.16.04.1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) ii php7.0-gd 7.0.18-0ubuntu0.16.04.1 amd64 GD module for PHP ii php7.0-json 7.0.18-0ubuntu0.16.04.1 amd64 JSON module for PHP ii php7.0-mysql 7.0.18-0ubuntu0.16.04.1 amd64 MySQL module for PHP ii php7.0-opcache 7.0.18-0ubuntu0.16.04.1 amd64 Zend OpCache module for PHP ii php7.0-readline 7.0.18-0ubuntu0.16.04.1 amd64 readline module for PHP ii php7.0-xml 7.0.18-0ubuntu0.16.04.1 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP ii php7.0-xmlrpc 7.0.18-0ubuntu0.16.04.1 amd64 XMLRPC-EPI module for PHP ii php7.0-zip 7.0.18-0ubuntu0.16.04.1 amd64 Zip module for PHP
安装最新稳定的 PHP
根据您的操作系统参阅以下文档:
- 在 RHEL/CentOS 7 上安装PHP 7.x (CentOS 8 用户请参阅此页面以安装 PHP 7.4.x)
- 在 Debian 8 上设置PHP 7.x
- Alpine Linux 安装 PHP 7.x
- OpenSUSE 安装 PHP 7.x
- FreeBSD 使用 FPM 为 Nginx 安装 PHP 7.2
总结
找出 Linux 或 Unix 服务器上的 PHP 版本是一项简单的任务。在本快速教程中,我解释了有关如何查找 PHP 版本的各种方法。请注意,您可能会在服务器上看到多个 PHP 版本,例如 PHP 5.x、7.x 和 8.x。有关更多信息,请参阅 PHP文档和我们的25 个针对系统管理员的 PHP 安全最佳实践帖子。