Обновление PHP 5 до PHP 7 в Ubuntu 14.04
Версия 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: Apache, mod_php, NGINX, PHP 5, PHP 7, php-fpm, PPA, Ubuntu 14.04
1 комментарий
Здравствуйте! Подскажите, при обновлении php5-fpm на php7-fpm пятерка остается рабочей? То есть её можно продолжать использовать, если не заменять unix:/var/run/php5-fpm.sock;?
Просто надо перевести на php7 несколько сайтов, а остальные оставить на пятерке. Спасибо.