介绍
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 5 | PHP 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博客文章,并查看 官方迁移指南。