如何在Ubuntu14.04上升级到PHP7
介绍
PHP 7 于 2015 年 12 月 3 日发布,承诺比该语言的先前版本大幅提高速度,以及标量类型提示等新功能。 本指南介绍了如何将运行 PHP 5.x(任何版本)的 Apache 或 Nginx Web 服务器快速升级到 PHP 7。
警告: 与大多数主要版本的语言版本一样,最好在生产中切换到 PHP 7 之前稍等片刻。 同时,现在是测试您的应用程序与新版本的兼容性、执行基准测试以及熟悉新语言功能的好时机。
如果您正在运行具有活跃用户的任何服务或应用程序,那么首先在暂存环境中测试此过程是最安全的。
先决条件
本指南假设您在 Ubuntu 14.04 机器上运行 PHP 5.x,将 mod_php
与 Apache 结合使用,或 PHP-FPM 与 Nginx 结合使用。 它还假设您有一个配置为具有 sudo
权限的非 root 用户来执行管理任务。
为 PHP 7.0 包添加 PPA
Personal Package Archive 或 PPA 是托管在 Launchpad 上的 Apt 存储库。 PPA 允许第三方开发人员在官方渠道之外为 Ubuntu 构建和分发软件包。 它们通常是 beta 软件、修改版本和向后移植到旧版操作系统的有用来源。
Ondřej Surý 维护 Debian 的 PHP 包,并在 Ubuntu 上为 PHP 7.0 提供 一个 PPA。 在做任何其他事情之前,登录到您的系统,并将 Ondřej 的 PPA 添加到系统的 Apt 源中:
sudo add-apt-repository ppa:ondrej/php
您将看到 PPA 的描述,然后提示您继续。 按 Enter 继续。
注意: 如果您的系统语言环境设置为 UTF-8 以外的任何内容,则添加 PPA 可能会由于作者姓名中的错误处理字符而失败。 作为一种解决方法,您可以安装 language-pack-en-base
以确保生成语言环境,并在添加 PPA 时覆盖系统范围的语言环境设置:
sudo apt-get install -y language-pack-en-base sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
安装 PPA 后,更新本地包缓存以包含其内容:
sudo apt-get update
现在我们可以访问 PHP 7.0 的包,我们可以替换现有的 PHP 安装。
使用 Apache 升级 mod_php
本节介绍使用 Apache 作为 Web 服务器和 mod_php
执行 PHP 代码的系统的升级过程。 相反,如果您正在运行 Nginx 和 PHP-FPM,请跳到下一部分。
首先,安装新软件包。 这将升级所有重要的 PHP 包,除了 php5-mysql
,它将被删除。
sudo apt-get install php7.0
注意:如果您对/etc/php5/
中的任何配置文件进行了大量修改,这些文件仍然存在,可以引用。 PHP 7.0 的配置文件现在存在于 /etc/php/7.0
中。
如果您使用的是 MySQL,请确保重新添加更新的 PHP MySQL 绑定:
sudo apt-get install php7.0-mysql
使用 Nginx 升级 PHP-FPM
本节介绍使用 Nginx 作为 Web 服务器和 PHP-FPM 执行 PHP 代码的系统的升级过程。
首先,安装新的 PHP-FPM 包及其依赖项:
sudo apt-get install php7.0-fpm
系统将提示您继续。 按回车完成安装。
如果您使用的是 MySQL,请务必重新安装 PHP MySQL 绑定:
sudo apt-get install php7.0-mysql
注意:如果您对/etc/php5/
中的任何配置文件进行了大量修改,这些文件仍然存在,可以引用。 PHP 7.0 的配置文件现在存在于 /etc/php/7.0
中。
更新 Nginx 站点以使用新的套接字路径
Nginx 使用 Unix 域套接字 与 PHP-FPM 通信。 套接字映射到文件系统上的路径,我们的 PHP 7 安装默认使用新路径:
PHP 5 | PHP 7 |
---|---|
/var/run/php5-fpm.sock | /var/run/php/php7.0-fpm.sock |
使用 nano
(或您选择的编辑器)打开 default
站点配置文件:
sudo nano /etc/nginx/sites-enabled/default
您的配置可能会有所不同。 查找以 location ~ \.php$ {
开头的块,以及类似于 fastcgi_pass unix:/var/run/php5-fpm.sock;
的行。 将其更改为使用 unix:/var/run/php/php7.0-fpm.sock
。
/etc/nginx/sites-enabled/default
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.php index.html index.htm; server_name server_domain_name_or_IP; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
退出并保存文件。 在 nano
中,您可以通过按 Ctrl-X 退出,y 确认,然后 Enter 确认要覆盖的文件名来完成此操作.
您应该对 /etc/nginx/sites-enabled
中定义的任何其他需要支持 PHP 的虚拟站点重复此过程。
现在我们可以重启nginx
:
sudo service nginx restart
测试 PHP
配置 Web 服务器并安装新软件包后,我们应该能够验证 PHP 是否已启动并正在运行。 首先在命令行检查已安装的 PHP 版本:
php -v
OutputPHP 7.0.0-5+deb.sury.org~trusty+1 (cli) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
您还可以在 Web 服务器的文档根目录中创建一个测试文件。 根据您的服务器和配置,这可能是以下之一:
/var/www/html
/var/www/
/usr/share/nginx/html
使用 nano
,在文档根目录中打开一个名为 info.php
的新文件。 默认情况下,在 Apache 上,这将是:
sudo nano /var/www/html/info.php
在 Nginx 上,您可以改为使用:
sudo nano /usr/share/nginx/html/info.php
粘贴以下代码:
信息.php
<?php phpinfo(); ?>
退出编辑器,保存 info.php
。 现在,在浏览器中加载以下地址:
http://server_domain_name_or_IP/info.php
您应该看到 PHP 7 的 PHP 版本和配置信息。 仔细检查后,删除 info.php
是最安全的:
sudo rm /var/www/html/info.php
结论
您现在有一个工作的 PHP 7 安装。 从这里,您可能想查看 Erika Heidi 的 为 PHP 7 做好准备 博客文章,并查看 官方迁移指南 。