网站搜索

如何在 Ubuntu 14.04 和 14.10 上安装适用于 Apache 或 Nginx 的 PHP 7


PHP 7.0 稳定版本发布几个月后,这可能是您考虑从旧版本升级到它的最佳时机。

对于升级总是要小心,尤其是在生产环境中,但现在升级是一个好主意,以便享受速度的改进,以及标量类型提示等功能以及更多功能。

您可以在系统上安装两个版本的 PHP,并使用其中一个进行测试,但请记住,在给定时间内仅启用一个 PHP Apache 模块。

本指南重点介绍如何从 PHP 5.X 进行升级,将 mod_phpApache Web 服务器或 PHP-FPM 结合使用> 与 Nginx Web 服务器连接。

  1. 在 Ubuntu 14.04 和 14.10 中安装 PHP 7
  2. Apache Web Server 下升级到 PHP 7.0
  3. Nginx Web 服务器下升级到 PHP 7.0

现在让我们深入了解如何升级到最新版本的 PHP 以及如何配置您的系统以使用它。

如何在 Ubuntu 14.04 和 14.10 中安装 PHP 7

首先,您必须通过运行以下命令添加由 Ondřej Surý 为 Debian 及其衍生产品(例如 Ubuntu)维护的 PPA

sudo add-apt-repository ppa:ondrej/php

接下来更新您的系统,如下所示:

sudo apt-get update

现在一切都已设置完毕,您可以安装 PHP 7.0,但我们将在不同部分讨论 ApacheNginx 的升级。

Apache Web Server 下升级到 PHP 7.0

本节适用于运行 Apache 的系统,其中 PHP 代码使用 mod_php 模块执行。运行以下命令安装最新的 PHP 版本:

sudo apt-get install php7.0
样本输出

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libapache2-mod-php7.0 libssl1.0.2 php-common php7.0-cli php7.0-common
  php7.0-json php7.0-opcache php7.0-readline
Suggested packages:
  php-pear
The following NEW packages will be installed:
  libapache2-mod-php7.0 libssl1.0.2 php-common php7.0 php7.0-cli php7.0-common
  php7.0-json php7.0-opcache php7.0-readline
0 upgraded, 9 newly installed, 0 to remove and 80 not upgraded.
Need to get 4,371 kB of archives.
After this operation, 17.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

现在您的系统上的 PHP 已经升级,但是如果您使用的是 MySQL 数据库管理系统,那么您将必须执行以下命令来更新 PHP-MySQL 绑定并您还需要安装一些有用的模块,例如 Curl、GD、Cli、JSON 等。

sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

如果你想安装额外的PHP7.0模块,你可以使用apt-cache命令列出所有PHP7.0模块并安装。

sudo apt-cache search php7
样本输出

php-radius - radius client library for PHP
php-http - PECL HTTP module for PHP Extended HTTP Support
php-uploadprogress - file upload progress tracking extension for PHP
php-mongodb - MongoDB driver for PHP
php7.0-common - documentation, examples and common module for PHP
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.0-dev - Files for PHP7.0 module development
php7.0-curl - CURL module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-readline - readline module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-pspell - pspell module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-json - JSON module for PHP
php-all-dev - package depending on all supported PHP development packages
php7.0-sybase - Sybase module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-opcache - Zend OpCache module for PHP
php-apcu - APC User Cache for PHP
php-xdebug - Xdebug Module for PHP
php-imagick - Provides a wrapper to the ImageMagick library
php-ssh2 - Bindings for the libssh2 library
php-redis - PHP extension for interfacing with Redis
php-memcached - memcached extension module for PHP, uses libmemcached
php-apcu-bc - APCu Backwards Compatibility Module
php-amqp - AMQP extension for PHP
php7.0-bz2 - bzip2 module for PHP
php-rrd - PHP bindings to rrd tool system
php-uuid - PHP UUID extension
php-memcache - memcache extension module for PHP
php-gmagick - Provides a wrapper to the GraphicsMagick library
php-smbclient - PHP wrapper for libsmbclient
php-zmq - ZeroMQ messaging bindings for PHP
php-igbinary - igbinary PHP serializer
php-msgpack - PHP extension for interfacing with MessagePack
php-geoip - GeoIP module for PHP
php7.0-bcmath - Bcmath module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-soap - SOAP module for PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.0-zip - Zip module for PHP
php-tideways - Tideways PHP Profiler Extension
php-yac - YAC (Yet Another Cache) for PHP
php-mailparse - Email message manipulation for PHP
php-oauth - OAuth 1.0 consumer and provider extension
php-propro - propro module for PHP
php-raphf - raphf module for PHP
php-solr - PHP extension for communicating with Apache Solr server
php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP
php-gearman - PHP wrapper to libgearman
php7.0-dba - DBA module for PHP

安装 PHP7.0 及其模块后,您可以重新启动 Apache Web 服务器并验证 PHP 版本,如下所示:

sudo service apache2 restart
php -v
样本输出

PHP 7.0.7-1+donate.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

您还可以通过在/var/www/html目录下创建info.php文件来验证PHP7信息。


sudo vi /var/www/html/info.php

放置以下代码并通过http://server_IP-address/info.php访问页面。


<?php
phpinfo();
?>

Nginx Web 服务器下升级到 PHP 7.0

本节将带您完成升级到 PHP7.0 以及使用 Nginx Web 服务器更新 PHP-FPM 的过程,其中 PHP 代码是使用 PHP-FPM 执行的。 。

运行以下命令安装最新的 PHP-FPM 软件包:

sudo apt-get install php7.0
sudo apt-get install php7.0-fpm

PHP 现在已经升级,但是如果您使用 MySQL,那么您将必须执行以下命令来更新 PHP-MySQL 绑定和一些附加模块,如下所示:

sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

接下来,您需要在文件 /etc/nginx/sites-enabled/default 或必须使用和支持 PHP 的虚拟站点的所有文件中附加 fastcgi_pass 指令,因为 PHP 用于与 Nginx 通信的 PHP-FPM 套接字文件的路径已更改。

使用您最喜欢的编辑器并打开文件进行编辑,如下所示:


sudo vi /etc/nginx/sites-enabled/default 

修改或追加如下:


location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
                return 404;
        }
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

然后重新启动Nginx和php-fpm,如下所示:


sudo service nginx restart
sudo service php7.0-fpm restart

最后,您可以通过首先检查 PHP 版本然后使用 Web 服务器进行测试来测试 PHP 是否正常工作。

php -v

您可以通过在 /usr/share/nginx/html/ 目录下编写一个小的 info.php 文件来获取有关 PHP 包的信息:

sudo vi /usr/share/nginx/html/info.php 

将此代码放入您的 info.php 文件中:

<?php
phpinfo();
?>

保存并退出文件。

打开您的网络浏览器,输入http://server_IP-address/info.php,您应该能够看到下面的页面,其中显示了有关 PHP 包的详细信息。

您现在可以在 Ubuntu 14.04/14.10 系统上愉快地使用 PHP 7.0,我希望本指南对您有所帮助。

有关升级 PHP 的任何其他信息或问题,欢迎在下面的评论部分发表评论。