Поиск по сайту:

Как перейти на PHP 7 в Ubuntu 14.04


Введение

PHP 7, выпущенный 3 декабря 2015 года, обещает существенное улучшение скорости по сравнению с предыдущими версиями языка, а также новые функции, такие как подсказки скалярного типа. В этом руководстве объясняется, как быстро обновить веб-сервер Apache или Nginx с PHP 5.x (любой версии) до PHP 7.

Предупреждение. Как и в случае с большинством языковых выпусков основной версии, лучше немного подождать, прежде чем переходить на PHP 7 в производственной среде. А пока самое время протестировать ваши приложения на совместимость с новой версией, выполнить тесты производительности и ознакомиться с новыми функциями языка.

Если вы запускаете какие-либо службы или приложения с активными пользователями, безопаснее сначала протестировать этот процесс в промежуточной среде.

Предпосылки

В этом руководстве предполагается, что вы используете PHP 5.x на компьютере с Ubuntu 14.04, используя либо mod_php в сочетании с Apache, либо PHP-FPM в сочетании с Nginx. Также предполагается, что у вас есть пользователь без полномочий root, настроенный с привилегиями sudo для административных задач.

Добавление PPA для пакетов PHP 7.0

Персональный архив пакетов или PPA — это репозиторий Apt, размещенный на Launchpad. PPA позволяют сторонним разработчикам создавать и распространять пакеты для Ubuntu за пределами официальных каналов. Они часто являются полезными источниками бета-версий программного обеспечения, модифицированных сборок и резервных копий для более старых выпусков операционной системы.

Ондржей Сури поддерживает пакеты PHP для Debian и предлагает PPA для PHP 7.0 в Ubuntu. Прежде чем делать что-либо еще, войдите в свою систему и добавьте PPA Ондржея в источники Apt системы:

  1. sudo add-apt-repository ppa:ondrej/php

Вы увидите описание PPA, а затем приглашение продолжить. Нажмите Enter, чтобы продолжить.

Примечание. Если языковой стандарт вашей системы отличается от UTF-8, добавление PPA может завершиться ошибкой из-за ошибки обработки символов в имени автора. В качестве обходного пути вы можете установить language-pack-en-base, чтобы убедиться, что локали созданы, и переопределить общесистемные настройки локали при добавлении PPA:

  1. sudo apt-get install -y language-pack-en-base
  2. sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

После установки PPA обновите локальный кеш пакетов, чтобы включить его содержимое:

  1. sudo apt-get update

Теперь, когда у нас есть доступ к пакетам для PHP 7.0, мы можем заменить существующую установку PHP.

Обновление mod_php с помощью Apache

В этом разделе описывается процесс обновления системы, использующей Apache в качестве веб-сервера и mod_php для выполнения кода PHP. Если вместо этого вы используете Nginx и PHP-FPM, перейдите к следующему разделу.

Сначала установите новые пакеты. Это обновит все важные пакеты PHP, за исключением php5-mysql, который будет удален.

  1. sudo apt-get install php7.0

Примечание. Если вы внесли существенные изменения в какие-либо файлы конфигурации в /etc/php5/, эти файлы остаются на месте, и на них можно ссылаться. Файлы конфигурации для PHP 7.0 теперь находятся в /etc/php/7.0.

Если вы используете MySQL, обязательно повторно добавьте обновленные привязки PHP MySQL:

  1. sudo apt-get install php7.0-mysql

Обновление PHP-FPM с помощью Nginx

В этом разделе описывается процесс обновления системы, использующей Nginx в качестве веб-сервера и PHP-FPM для выполнения PHP-кода.

Сначала установите новый пакет PHP-FPM и его зависимости:

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

Вам будет предложено продолжить. Нажмите Enter, чтобы завершить установку.

Если вы используете MySQL, обязательно переустановите привязки PHP MySQL:

  1. 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 (или любого другого редактора):

  1. 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 для подтверждения перезаписи имени файла.

Вы должны повторить этот процесс для любых других виртуальных сайтов, определенных в /etc/nginx/sites-enabled, которые должны поддерживать PHP.

Теперь мы можем перезапустить nginx:

  1. sudo service nginx restart

Тестирование PHP

С настроенным веб-сервером и установленными новыми пакетами мы сможем убедиться, что PHP запущен и работает. Начните с проверки установленной версии PHP в командной строке:

  1. php -v
Output
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

Вы также можете создать тестовый файл в корне документа веб-сервера. В зависимости от вашего сервера и конфигурации это может быть одним из:

  • /var/www/html
  • /var/www/
  • /usr/share/nginx/html

Используя nano, откройте новый файл с именем info.php в корне документа. По умолчанию в Apache это будет:

  1. sudo nano /var/www/html/info.php

В Nginx вместо этого вы можете использовать:

  1. 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:

  1. sudo rm /var/www/html/info.php

Заключение

Теперь у вас есть работающая установка PHP 7. Отсюда вы можете ознакомиться с официальным руководством по миграции Эрики Хайди.