如何升级到PHP 7在Ubuntu 14.04

介绍

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到系统的Ap​​t源:

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

/ 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确认,并回车确认文件名改写做到这一点。

你应该重复这个过程中定义的任何其他虚拟站点/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

粘贴以下代码:

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博客文章,并期待在正式迁移指南

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏