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

Published by 1 Comment

Версия PHP 7.0 была выпущена 3 декабря 2015 года. PHP 7 обладает существенно улучшенной скоростью и множеством других новых функций.

Это руководство поможет быстро обновить веб-сервер Apache или Nginx, работающий на любом релизе PHP версии 5.

Примечание: Запускать PHP 7 в производство сразу после обновления не рекомендуется. Сначала нужно проверить приложения на совместимость с новым релизом и ознакомиться с функциями языка.

Требования

Для выполнения руководства нужно иметь экземпляр PHP 5.x на сервере Ubuntu 14.04 с предустановленным модулем mod_php (для Apache) или PHP-FPM (для Nginx). Также нужна учётная запись не-root с доступом к sudo.

Добавление PPA для PHP 7

PPA (или Personal Package Archive) – это apt-репозиторий, размещенный на Launchpad. Репозитории PPA позволяют сторонним разработчикам работать над пакетами Ubuntu вне официального процесса. В таких репозиториях часто можно найти полезные бета-версии, пользовательский код и ретроподдержку устаревших версий операционной системы.

Ondřej Surý поддерживает пакеты PHP для Debian и предлагает PPA-репозиторий PHP 7.0 для Ubuntu. Войдите в систему и добавьте репозиторий:

sudo add-apt-repository ppa:ondrej/php-7.0

На экране появится описание PPA. Чтобы продолжить, нажмите Enter.

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

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

После добавления PPA обновите кэш пакетов системы:

sudo apt-get update

Теперь у системы есть доступ к PHP 7.

Обновление mod_php для Apache

Этот раздел содержит инструкции по обновлению модуля mod_php для поддержки нового кода PHP.

Примечание: Если вы используете веб-сервер Nginx, переходите к следующему разделу.

Сначала установите пакеты новой версии. Это обновит все пакеты PHP, кроме php5-mysql, который будет удалён.
sudo apt-get install php7.0

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

Если на сервере используется СУБД MySQL, нужно обновить связки PHP:

sudo apt-get install php7.0-mysql

Обновление PHP-FPM для Nginx

Этот раздел содержит инструкции по обновлению PHP-FPM для поддержки новой версии PHP.

Установите пакеты новой версии PHP и её зависимостей:

sudo apt-get install php7.0-fpm

Нажмите Enter, чтобы продолжить.

При использовании MySQL нужно переустановить связки PHP:

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:

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;
}
}

Сохраните и закройте файл.

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

Перезапустите nginx:

sudo service nginx restart

Тестирование 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

Также можно создать тестовый файл в каталоге document root веб-сервера. В зависимости от используемого сервера и настройки это может быть один из этих каталогов:

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

При помощи nano откройте новый файл info.php в каталоге document root. По умолчанию для Apache это каталог:

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

Для Nginx:

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

Вставьте в файл следующий код:

<?php
phpinfo();
?>

Закройте редактор и сохраните файл. Теперь откройте файл в браузере:

http://server_domain_name_or_IP/info.php

Появившаяся на экране страница указывает версию PHP и предоставляет данные о настройке PHP 7. После проверки рекомендуется удалить файл info.php, так как он содержит конфиденциальные данные.

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

Заключение

Теперь на сервере есть готовая к работе установка PHP 7.

За дополнительной информацией обращайтесь к официальному руководству PHP 7.

Tags: , , , , , , ,

1 комментарий

  • Николай:

    Здравствуйте! Подскажите, при обновлении php5-fpm на php7-fpm пятерка остается рабочей? То есть её можно продолжать использовать, если не заменять unix:/var/run/php5-fpm.sock;?
    Просто надо перевести на php7 несколько сайтов, а остальные оставить на пятерке. Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>