介绍
PHP 7于2015年12月3日发布,与以前的语言版本相比,速度有了大幅提升,同时还带来了诸如标量类型提示等新功能。 本指南解释如何快速升级运行PHP 5.x(任何版本)的Apache或Nginx Web服务器到PHP 7。
警告:与大多数主要版本发布的语言,最好在生产中切换到PHP 7之前要等待一小会儿。 同时,现在是测试您的应用程序与新版本的兼容性,执行基准测试以及熟悉新语言功能的好时机。
如果您正在使用活动用户运行任何服务或应用程序,最先在分段环境中首先测试此过程是最安全的。
先决条件
本指南假定你是一个Ubuntu 14.04机器上运行PHP 5.x中,无论是使用mod_php
在与Nginx的结合与Apache或PHP-FPM一起。 它还假定你有一个配置非root用户sudo
权限管理任务。
为PHP 7.0包添加PPA
一个个人包档案 ,或PPA,是托管在APT仓库快速启动 。 PPA允许第三方开发人员在官方渠道之外构建和分发Ubuntu的软件包。 它们通常是测试版软件,修改版本和对较旧版本操作系统的反向移植的有用来源。
的OndrejSurý保持为Debian的PHP包,并提供一个PPA为PHP 7.0在Ubuntu上 。 在做任何事情之前,登录到您的系统,并添加Ondřej的PPA到系统的Apt源:
sudo add-apt-repository ppa:ondrej/php
您将看到PPA的说明,然后提示继续。 按回车键继续。
注意:如果您的系统语言环境设置为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安装。
升级mod_php
与Apache
本节介绍使用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
系统将提示您继续。 按Enter键完成安装。
如果您使用MySQL,请务必重新安装PHP MySQL绑定:
sudo apt-get install php7.0-mysql
注意:如果你已经取得了实质性的修改任何配置文件/etc/php5/
,这些文件仍然存在,并可以被引用。 对于PHP 7.0的配置文件,现在住在/etc/php/7.0
。
更新Nginx网站以使用新的套接字路径
Nginx的使用PHP-FPM一个通信Unix域套接字 。 套接字映射到文件系统上的路径,我们的PHP 7安装默认使用一个新路径:
PHP 5 | PHP 7 |
---|---|
/var/run/php5-fpm.sock | /var/run/php/php7.0-fpm.sock |
打开default
网站配置文件nano
(或您选择的编辑器):
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
。
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确认,并回车确认文件名改写做到这一点。
你应该重复这个过程中定义的任何其他虚拟站点/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
phpinfo();
?>
退出编辑器,节省了info.php
。 现在,在浏览器中加载以下地址:
http://server_domain_name_or_IP/info.php
您应该看到PHP版本和配置信息的PHP 7.一旦你仔细检查这一点,这是最安全的删除info.php
:
sudo rm /var/www/html/info.php
结论
您现在有一个工作的PHP 7安装。 从这里,你可能想看看埃里卡海蒂前的准备工作PHP 7博客文章,并期待在正式迁移指南 。