Ubuntu 安装 PHP (5.6/7.0/7.1/7.2)

本文主要介绍如何在ubuntu 14.04/16.04 系统下安装不同版本的PHP软件包,比如PHP 5.6, PHP 7.0, PHP 7.1 and PHP 7.2. 通常情况下,在配置WEB服务器的时候,PHP 和其相关的软件包都是我们必需要安装的组件。

从Ubuntu 16.04 系统开始,官方镜像源里默认提供的PHP版本是7.0,而不是之前PHP5,所以我们只需要通过apt-get 命令直接安装php7.

当然,如果你的系统里已经安装了更高版本的php后,想再安装低版本的PHP,那么就需要先把高版本的PHP卸载掉。

Ubuntu 安装PHP 5.6

如果想在ubuntu系统里安装PHP 5.6 ,我们可以通过PPA来安装特定版本的PHP。 执行下面的命令:

$sudo apt-get install  python-software-properties

$sudo add-apt-repository ppa:ondrej/php

$sudo apt-get update

$sudo apt-get install  php5.6  -y

命令输出如下:

root@devops:~# apt-get install  python-software-properties
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
python-apt python-pycurl
建议安装:
python-apt-dbg python-apt-doc libcurl4-gnutls-dev python-pycurl-dbg
python-pycurl-doc
下列【新】软件包将被安装:
python-apt python-pycurl python-software-properties
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 206 个软件包未被升级。
需要下载 203 kB 的归档。
解压缩后会消耗 931 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 python-apt amd64 1.1.0~beta1ubuntu0.16.04.1 [139 kB]
获取:2 http://mirrors.aliyun.com/ubuntu xenial/main amd64 python-pycurl amd64 7.43.0-1ubuntu1 [43.3 kB]
获取:3 http://mirrors.aliyun.com/ubuntu xenial-updates/universe amd64 python-software-properties all 0.96.20.7 [20.7 kB]
已下载 203 kB,耗时 0秒 (1,339 kB/s)
正在选中未选择的软件包 python-apt。
(正在读取数据库 ... 系统当前共安装有 291012 个文件和目录。)
正准备解包 .../python-apt_1.1.0~beta1ubuntu0.16.04.1_amd64.deb  ...
正在解包 python-apt (1.1.0~beta1ubuntu0.16.04.1) ...
正在选中未选择的软件包 python-pycurl。
正准备解包 .../python-pycurl_7.43.0-1ubuntu1_amd64.deb  ...
正在解包 python-pycurl (7.43.0-1ubuntu1) ...
正在选中未选择的软件包 python-software-properties。
正准备解包 .../python-software-properties_0.96.20.7_all.deb  ...
正在解包 python-software-properties (0.96.20.7) ...
正在设置 python-apt (1.1.0~beta1ubuntu0.16.04.1) ...
正在设置 python-pycurl (7.43.0-1ubuntu1) ...
正在设置 python-software-properties (0.96.20.7) ...

 

root@devops:~# add-apt-repository ppa:ondrej/php
Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.
Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa
You can get more information about the packages at https://deb.sury.org
BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting
CAVEATS:
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/
WARNING: add-apt-repository is broken with non-UTF-8 locales, see
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
更多信息: https://launchpad.net/~ondrej/+archive/ubuntu/php
按回车继续或者 Ctrl+c 取消添加
gpg: 钥匙环‘/tmp/tmpoduum1hr/secring.gpg’已建立
gpg: 钥匙环‘/tmp/tmpoduum1hr/pubring.gpg’已建立
gpg: 下载密钥‘E5267A6C’,从 hkp 服务器 keyserver.ubuntu.com
gpg: /tmp/tmpoduum1hr/trustdb.gpg:建立了信任度数据库
gpg: 密钥 E5267A6C:公钥“Launchpad PPA for Ondřej Surý”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1  (RSA: 1)
OK
root@devops:~# apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中:7 http://dl.google.com/linux/chrome/deb stable Release
获取:9 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease [23.9 kB]
忽略:10 http://archive.ubuntu.com/ubuntu trusty InRelease
命中:11 http://archive.ubuntu.com/ubuntu trusty Release
命中:13 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
获取:14 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 Packages [46.0 kB]
获取:15 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main i386 Packages [45.8 kB]
获取:16 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main Translation-en [26.5 kB]
已下载 142 kB,耗时 6秒 (22.3 kB/s)
正在读取软件包列表... 完成
root@devops:~#
root@devops:~# sudo apt-get install  php5.6  -y
sudo: 无法解析主机:devops
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5.6 libapr1
libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libpcre16-3
libpcre3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libssl1.1 php5.6-cli
php5.6-common php5.6-json php5.6-opcache php5.6-readline
建议安装:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom php-pear
下列【新】软件包将被安装:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5.6 libapr1
libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libssl1.1
php5.6 php5.6-cli php5.6-common php5.6-json php5.6-opcache php5.6-readline
下列软件包将被升级:
libpcre16-3 libpcre3 libpcre3-dev libpcre32-3 libpcrecpp0v5
升级了 5 个软件包,新安装了 17 个软件包,要卸载 0 个软件包,有 215 个软件包未被升级。
需要下载 9,640 kB 的归档。
解压缩后会消耗 25.5 MB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libapr1 amd64 1.5.2-3 [86.0 kB]
获取:21 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 libapache2-mod-php5.6 amd64 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 [1,240 kB]
获取:22 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php5.6 all 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 [261 kB]
已下载 9,640 kB,耗时 1分 20秒 (119 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 libapr1:amd64。
(正在读取数据库 ... 系统当前共安装有 291064 个文件和目录。)
正准备解包 .../libapr1_1.5.2-3_amd64.deb  ...
正在解包 libapr1:amd64 (1.5.2-3) ...
...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 libpcre3:amd64 (2:8.41-4+ubuntu16.04.1+deb.sury.org+1) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在选中未选择的软件包 apache2-bin。
(正在读取数据库 ... 系统当前共安装有 291099 个文件和目录。)
正准备解包 .../apache2-bin_2.4.18-2ubuntu3.6_amd64.deb  ...
正在解包 apache2-bin (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 apache2-utils。
正准备解包 .../apache2-utils_2.4.18-2ubuntu3.6_amd64.deb  ...
正在解包 apache2-utils (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 apache2-data。
正准备解包 .../apache2-data_2.4.18-2ubuntu3.6_all.deb  ...
正在解包 apache2-data (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 apache2。
正准备解包 .../apache2_2.4.18-2ubuntu3.6_amd64.deb  ...
正在解包 apache2 (2.4.18-2ubuntu3.6) ...
正在选中未选择的软件包 libssl1.1:amd64。
正准备解包 .../libssl1.1_1.1.0h-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 libssl1.1:amd64 (1.1.0h-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-common。
正准备解包 .../php5.6-common_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-common (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-json。
正准备解包 .../php5.6-json_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-json (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-opcache。
正准备解包 .../php5.6-opcache_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-opcache (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-readline。
正准备解包 .../php5.6-readline_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-readline (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6-cli。
正准备解包 .../php5.6-cli_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 php5.6-cli (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 libapache2-mod-php5.6。
正准备解包 .../libapache2-mod-php5.6_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_amd64.deb  ...
正在解包 libapache2-mod-php5.6 (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在选中未选择的软件包 php5.6。
正准备解包 .../php5.6_5.6.34-1+ubuntu16.04.1+deb.sury.org+1_all.deb  ...
正在解包 php5.6 (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
配置 “Nginx HTTP” 的规则已经升级
配置 “OpenSSH” 的规则已经升级
跳过重新加载防火墙
正在处理用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在设置 apache2-utils (2.4.18-2ubuntu3.6) ...
正在设置 apache2-data (2.4.18-2ubuntu3.6) ...
正在设置 apache2 (2.4.18-2ubuntu3.6) ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enbling module status.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
正在设置 libssl1.1:amd64 (1.1.0h-1+ubuntu16.04.1+deb.sury.org+1) ...
正在设置 php5.6-common (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
apache2_invoke: Enable module php5.6
正在设置 php5.6 (5.6.34-1+ubuntu16.04.1+deb.sury.org+1) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在处用于 systemd (229-4ubuntu21.1) 的触发器 ...
正在理用于 ureadahead (0.100.0-19) 的触发器 ...
正在处理用于 ufw (0.35-0ubuntu2) 的触发器 ...
配置 “Nginx HTTP” 的规则已经升级
配置 “OpenSSH” 的规则已经升级
跳过重新加载防火墙

查看已经安装的php 版本号

执行下面的命令:

#php –v

命令输出如下:

root@devops:~# php -v
PHP 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

从上面的命令输出,我们可以看到php5.6 已经被安装到了ubuntu 16.4 系统里。

Ubuntu 安装PHP 7.0

如果需要在ubuntu系统中安装php 7.0, 我们可以通过默认的ubuntu 镜像源和上面介绍PPA来进行安装。

方法一:通过ubuntu镜像源

执行下面的apt-get install  命令安装php 7.0:

$sudo apt-get install php7.0

命令输出如下:

root@devops:~# apt-get install php7.0
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libapache2-mod-php7.0 php7.0-cli php7.0-common php7.0-curl php7.0-json
php7.0-opcache php7.0-readline
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-json php7.0-opcache
php7.0-readline
下列软件包将被升级:
php7.0-common php7.0-curl
升级了 2 个软件包,新安装了 6 个软件包,要卸载 0 个软件包,有 213 个软件包未被升级。
需要下载 3,574 kB 的归档。
解压缩后会消耗 9,161 kB 的额外空间。
您希望继续执行吗? [Y/n]

方法二:通过PPA来安装PHP 7.0

执行下面的命令:

$sudo apt-get install  python-software-properties
$sudo add-apt-repository ppa:ondrej/php
$sudo apt-get update
$sudo apt-get install  php7.0  -y

Ubuntu 安装PHP 7.1

方法一:通过ubuntu镜像源安装php 7.1

执行下面的apt-get install  命令安装php 7.1:

$sudo apt-get install php7.1

命令输出如下:

root@devops:~# apt-get install php7.1
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libapache2-mod-php7.1 php7.1-cli php7.1-common php7.1-json php7.1-opcache
php7.1-readline
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.1 php7.1 php7.1-cli php7.1-common php7.1-json
php7.1-opcache php7.1-readline
升级了 0 个软件包,新安装了 7 个软件包,要卸载 0 个软件包,有 215 个软件包未被升级。
需要下载 3,705 kB 的归档。
解压缩后会消耗 14.4 MB 的额外空间。
您希望继续执行吗? [Y/n]

方法二:通过PPA来安装PHP 7.1

执行下面的命令:

$sudo apt-get install  python-software-properties

$sudo add-apt-repository ppa:ondrej/php

$sudo apt-get update

$sudo apt-get install  php7.1  -y

Ubuntu 安装PHP 7.2

方法一:通过ubuntu镜像源安装php 7.2

当你在ubuntu 16.04 系统下,执行apt-get install php 的时候,系统会默认安装最新的php 7.2 版本。

执行下面的apt-get install  命令安装php 7.2:

$sudo apt-get install php

命令输出如下:

root@devops:~# apt-get install php
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libapache2-mod-php7.2 libargon2-0 libsodium23 php7.2 php7.2-cli
php7.2-common php7.2-json php7.2-opcache php7.2-readline
建议安装:
php-pear
下列【新】软件包将被安装:
libapache2-mod-php7.2 libargon2-0 libsodium23 php php7.2 php7.2-cli
php7.2-common php7.2-json php7.2-opcache php7.2-readline
升级了 0 个软件包,新安装了 10 个软件包,要卸载 0 个软件包,有 215 个软件包未被升级。
需要下载 4,021 kB 的归档。
解压缩后会消耗 17.4 MB 的额外空间。
您希望继续执行吗? [Y/n]

从命令的输出中我们可以看到在安装php软件包的时候,会安装跟php依赖的软件包,比如:

  • libapache2-mod-php7.2
  • libargon2-0
  • libsodium23
  • libssl1.1
  • php7.2-cli
  • php7.2-common
  • php7.2-json
  • php7.2-opcache
  • php7.2-readline

方法二:通过PPA来安装PHP 7.2

执行下面的命令:

$sudo apt-get install  python-software-properties

$sudo add-apt-repository ppa:ondrej/php

$sudo apt-get update

$sudo apt-get install  php7.2  -y

让我们来看下当前的php版本号,执行下面的命令:

#php –v

命令输出如下:

root@devops:~# php -v
PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar  6 2018 11:18:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.3-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Ubuntu下多PHP 版本切换

如果在ubuntu系统中安装了多个版本的php,那么我们也可以通过下面的命令来切换当前系统默认使用的php版本。

假如当前系统安装了php 5.6 和php7.2.

设置当前默认的php版本为5.6,执行下面的命令:

# update-alternatives  --set php /usr/bin/php5.6

命令输出如下:

root@devops:~# update-alternatives  --set php /usr/bin/php5.6
update-alternatives: 使用 /usr/bin/php5.6 来在手动模式中提供 /usr/bin/php (php)

root@devops:~# php -v
PHP 5.6.34-1+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

设置当前默认的php版本为7.2,执行下面的命令:

# update-alternatives  --set php /usr/bin/php7.2

命令输出如下:

root@devops:~# update-alternatives  --set php /usr/bin/php7.2
update-alternatives: 使用 /usr/bin/php7.2 来在手动模式中提供 /usr/bin/php (php)

root@devops:~# php -v
PHP 7.2.3-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Mar  6 2018 11:18:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.3-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

99%的人还阅读了:

Leave a Reply