Обновление до PHP 7 на Ubuntu 14.04

  • PHP
  • 12,993
  • 1
  • 0
  • 0
  • 1 год назад

Введение

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

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

Если у вас есть другие сервисы или приложения с активными пользователями, то лучше сначала провести тестирование.

Необходимые условия

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

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

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

Ондрей Суры (Ondrej Sury) поддерживает пакеты PHP для Debian и предлагает хранилище PPA для PHP 7.0 на Ubuntu. Для начала вам необходимо войти в свою систему и добавить это хранилище 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

В этом разделе описан процесс обновления для системы, использующей Apache в качестве веб-сервера и 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

Обновление PHP-FPM для системы с Nginx

В этом разделе описывается процесс обновления для системы, использующей Nginx в качестве веб-сервера и 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 для подтверждения, и Enter для подтверждения перезаписываемого имени файла.

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

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

sudo service nginx restart

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

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

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 это будет выглядеть следующим образом:

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, а также с официальным руководством по переходу от более ранних версий PHP к более поздним.

Комментарии

0