Как перейти на 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 системы:
- 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
OutputPHP 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. Отсюда вы можете ознакомиться с официальным руководством по миграции Эрики Хайди.