如何在 Ubuntu 14.04 上升级到 PHP 7

介绍

PHP 7 于 2015 年 12 月 3 日发布,与之前的语言版本相比,承诺大幅提高速度,以及新的功能,如 scalar 类型提示. 本指南解释了如何快速升级运行 PHP 5.x 的 Apache 或 Nginx 网页服务器(任何版本)到 PHP 7.

<$>[警告] 警告: 与大多数主要版本的语言版本一样,在转换到生产中的PHP 7之前最好稍等一会儿。

如果您正在运行有活跃用户的任何服务或应用程序,则最安全的是先在舞台环境中测试此过程。

前提条件

本指南假设您在 Ubuntu 14.04 机器上运行 PHP 5.x,使用与 Apache 结合的 `mod_php,或与 Nginx 结合的 PHP-FPM。

添加 PHP 7.0 包的 PPA

A Personal Package Archive,或PPA,是托管在Launchpad(LINK0)的Apt存储库。PPA允许第三方开发人员在官方渠道之外构建和分发Ubuntu的包。

Ondřej Surý 维护了 Debian 的 PHP 包,并提供 PPA for PHP 7.0 on Ubuntu. 在做其他任何事情之前,请登录您的系统,并将 Ondřej 的 PPA 添加到系统的 Apt 源:

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

您将看到PPA的描述,然后是继续的提示。

<$>[注] 注: 如果您的系统的本地设置为 UTF-8 以外的任何东西,则由于作者名称中的字符处理错误,添加 PPA 可能会失败。

1sudo apt-get install -y language-pack-en-base
2sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

美元

安装 PPA 后,更新本地包缓存以包括其内容:

1sudo apt-get update

现在我们可以访问PHP 7.0的包,我们可以替代现有的PHP安装。

使用 Apache 升级mod_php

本节描述了系统使用Apache作为Web服务器和mod_php来执行PHP代码的升级过程。

首先,安装新的包,这将更新所有重要的PHP包,除了php5-mysql,将被删除。

1sudo apt-get install php7.0

<$>[注] 注: 如果您在 /etc/php5/中对任何配置文件进行了实质性更改,这些文件仍然存在,并且可以参考。

如果您正在使用MySQL,请确保重新添加更新的PHP MySQL绑定:

1sudo apt-get install php7.0-mysql

使用 Nginx 升级 PHP-FPM

本节描述了使用 Nginx 作为 Web 服务器和 PHP-FPM 执行 PHP 代码的系统升级过程。

首先,安装新的 PHP-FPM 包及其依赖:

1sudo apt-get install php7.0-fpm

您将被要求继续。 按 Enter 完成安装。

如果您正在使用 MySQL,请确保重新安装 PHP MySQL 绑定:

1sudo apt-get install php7.0-mysql

<$>[注] 注: 如果您在 /etc/php5/中对任何配置文件进行了实质性更改,这些文件仍然存在,并且可以参考。

更新 Nginx 网站(网站)以使用新的 Socket Path

Nginx 使用 Unix 域接口与 PHP-FPM 通信。 接口地图到文件系统上的路径,我们的 PHP 7 安装使用了新的路径:

PHP 5PHP 7
/var/run/php5-fpm.sock/var/run/php/php7.0-fpm.sock

使用nano打开默认网站配置文件(或您所选择的编辑器):

1sudo nano /etc/nginx/sites-enabled/default

你的配置可能有所不同. 寻找一个开始于 位置 ~ \.php$ {,和一行看起来像 fastcgi_pass unix:/var/run/php5-fpm.sock;. 改变这个使用 unix:/var/run/php/php7.0-fpm.sock`。

 1[label /etc/nginx/sites-enabled/default]
 2server {
 3    listen 80 default_server;
 4    listen [::]:80 default_server ipv6only=on;
 5
 6    root /var/www/html;
 7    index index.php index.html index.htm;
 8
 9    server_name server_domain_name_or_IP;
10
11    location / {
12        try_files $uri $uri/ =404;
13    }
14
15    error_page 404 /404.html;
16    error_page 500 502 503 504 /50x.html;
17    location = /50x.html {
18        root /usr/share/nginx/html;
19    }
20
21    location ~ \.php$ {
22        try_files $uri =404;
23        fastcgi_split_path_info ^(.+\.php)(/.+)$;
24        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
25        fastcgi_index index.php;
26        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
27        include fastcgi_params;
28    }
29}

nano中,您可以通过按 Ctrl-X来退出, y来确认,和 Enter来确认文件名来重写来完成此操作。

您应该对在/etc/nginx/sites-enabled中定义的任何其他虚拟网站重复此过程,这些网站需要支持 PHP。

现在我们可以重新启动nginx:

1sudo service nginx restart

PHP 测试

有了 Web 服务器配置和新包安装,我们应该能够验证 PHP 是否已启动并运行。

1php -v
1[secondary_label Output]
2PHP 7.0.0-5+deb.sury.org~trusty+1 (cli) ( NTS )
3Copyright (c) 1997-2015 The PHP Group
4Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
5    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中,这将是:

1sudo nano /var/www/html/info.php

在 Nginx 上,您可以使用:

1sudo nano /usr/share/nginx/html/info.php

输入以下代码:

1[label info.php]
2<?php
3phpinfo();
4?>

退出编辑器,保存 info.php. 现在,在您的浏览器中加载以下地址:

1http://server_domain_name_or_IP/info.php

您应该看到 PHP 版本和配置信息 PHP 7. 一旦您对此进行了双重检查,最安全的是删除 info.php:

1sudo rm /var/www/html/info.php

结论

从这里,你可能想查看Erika Heidi的 Getting Ready for PHP 7博客文章,并查看 官方迁移指南

Published At
Categories with 技术
comments powered by Disqus