2015年12月3日发布的PHP 7承诺与以前版本的语言相比具有显着的速度提升,以及标量类型提示等新功能。本指南介绍如何快速将运行PHP 5.x(任何版本)的Apache或Nginx Web服务器升级到PHP 7。
警告:与大多数主要版本语言版本一样,在生产中切换到PHP 7之前最好等一会儿。同时,现在是测试应用程序与新版本兼容性,执行基准测试以及熟悉新语言功能的好时机。
如果您正在运行具有活动用户的任何服务或应用程序,则最安全的做法是首先在暂存环境中测试此过程。
一台已经设置好可以使用sudo
命令的非root账号的Ubuntu 服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
本指南假设您在Ubuntu 14.04计算机上运行PHP 5.x,既可以mod_php
与Apache结合使用,也可以将PHP-FPM与Nginx结合使用。它还假定您为非root用户配置sudo
了管理任务的权限。
一个个人包档案,或PPA,是托管在一个恰当的存储库快速启动。PPA允许第三方开发人员在官方渠道之外为Ubuntu构建和分发软件包。它们通常是测试版软件的有用来源,修改后的构建版本以及向旧版本操作系统的反向移植。
OndřejSurý维护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安装。
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作为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使用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
。
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确认要覆盖的文件名来完成此操作。
您应该为需要支持PHP的在/etc/nginx/sites-enabled
任何其他虚拟站点重复此过程。
现在我们可以重启nginx
:
sudo service nginx restart
配置Web服务器并安装新软件包后,我们应该能够验证PHP是否已启动并正在运行。首先在命令行检查已安装的PHP版本:
php -v
PHP 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 7的PHP版本和配置信息。一旦您仔细检查了这一点,最安全的是删除info.php
:
sudo rm /var/www/html/info.php
您现在已经安装了PHP 7。在这里查看官方迁移指南。
更多Ubuntu教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Upgrade to PHP 7 on Ubuntu 14.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。