Введение
3 декабря 2015 года состоялся релиз финальной PHP версии 7.0.0. Новая версия содержит в себе множество нововведений, к примеру, увеличена производительность, добавлены анонимные классы, строгая типизация, безопасный рандом и многое другое. В этой статье мы расскажем, как можно быстро обновить веб-сервер Apache или Nginx c любой версии PHP 5 до PHP 7.
Требования
У вас должна быть установлена версия PHP 5 на операционной системе Ubuntu 14.04, и вы должны использовать либо модуль mod_php в случае веб-сервера Apache, либо PHP-FPM, если у вас веб-сервер Nginx. Также у вас должен быть создан пользователь, который не имеет root-прав, но может выполнять команды sudo для того, чтобы выполнять административные задачи.
Добавление PPA для пакетов PHP7
Персональные архивы пакетов (PPA) представляют собой пакеты, которые обычно создаются и распространяются в репозиториях, специальных серверах-хранилищах для таких файлов. launchpad.net – сервис, созданный для поддержки и развития подобных свободных проектов. Именно там вы можете найти бета-версии, модифицированные сборки и ретроподдержки для более старых версий операционной системы.
Ondřej Surý отвечает за пакеты PHP для Debian, и именно у него вы можете найти PPA для PHP 7.0 на Ubuntu. Поэтому в первую очередь авторизуйтесь в системе и добавьте PPA от Ondřej Surý в 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 установлен, вам необходимо обновить кэш локального пакета. Это нужно для того, чтобы локальный пакет включал содержание PPA:
$ sudo apt-get update
После того, как вы получили доступ к пакетам PHP 7.0, можно заменить уже установленную версию PHP.
Обновление модуля mod_php на Apache
В этом разделе вы найдете информацию о том, как обновить систему, использующую в качестве веб-сервера Apache и модуль mod_php для выполнения PHP-кода.
Для начала вам необходимо установить новые пакеты. Благодаря этому будут обновлены все важные PHP-пакеты, за исключением php5-mysql, который будет удален.
$ sudo apt-get install php7.0
Примечание.
Если вы делали какие-то значительные изменения в файлах конфигурации в /etc/php5/, они будут все еще доступны. Конфигурационные файлы для PHP 7 лежат в /etc/php/7.0.
Всем пользователям MySQL необходимо повторно добавить обновленные двухсторонние биндинги PHP MySQL. Обязательно убедитесь в том, что вы это сделали:
$ sudo apt-get install php7.0-mysql
Обновление PHP-FPM на Nginx
Инструкции, которые вы найдете в этом разделе, подойдут тем, кто использует в качестве веб-сервера Nginx, а PHP-код выполняется через менеджер процессов PHP-FPM.
Для начала установите новый пакет PHP-FPM и его зависимости:
$ sudo apt-get install php7.0-fpm
Для завершения установки вам нужно нажать Enter.
Всем пользователям MySQL необходимо убедиться, что они повторно добавили обновленные двухсторонние биндинги PHP MySQL:
$ sudo apt-get install php7.0-mysql
Примечание.
Если вы делали какие-то значительные изменения в файлах конфигурации в /etc/php5/, они будут все еще доступны. Конфигурационные файлы для PHP 7 вы можете найти в /etc/php/7.0.
Обновление пути сокета у веб-серверов Nginx
Nginx использует сокет домена Unix для того, чтобы взаимодействовать с PHP-FPM. По умолчанию установленная версия PHP 7 будет использовать тот путь, который ей указали сокеты:
PHP 5: /var/run/php5-fpm.sock
PHP 7: /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
После этого вам нужно выйти, а затем сохранить файл. Если вы работаете в редакторе nano, то просто нажмите Ctrl-X для выхода, y для подтверждения и Enter для того, чтобы подтвердить перезапись имени файла.
Повторите этот процесс для всех остальных виртуальных серверов, расположенных в /etc/nginx/sites-enabled, которым необходимо поддерживать PHP.
Далее перезапустите nginx:
$ sudo service nginx restart
Тестирование PHP
После того, как вы настроили веб-сервер и установили новые пакеты, необходимо проверить, что PHP работает. Для начала проверьте, какая версия PHP установлена, используя команду:
$ php –v
На экране высветится сообщение с необходимой информацией.
Создание тестового файла возможно и в корневом каталоге документов веб-сервера. В зависимости от того, какой у вас веб-сервер и конфигурация, это может быть один из следующих вариантов:
- /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://домен_или_IP/info.php
На экране должна высветиться версия PHP, а также данные, касающиеся конфигурации для PHP 7. После того, как вы все проверите, советуем удалить info.php:
$ sudo rm /var/www/html/info.php
Комментарии
"Err http://ppa.launchpad.net wheezy/main Sources 404 Not Found
Err http://ppa.launchpad.net wheezy/main i386 Packages 404 Not Found
Ign http://ppa.launchpad.net wheezy/main Translation-en
W: Failed to fetch http://ppa.launchpad.net/ ondrej/php/ubuntu/dists/wheezy/main/source/Sources 404 Not Found
W: Failed to fetch http://ppa.launchpad.net/ ondrej/php/ubuntu/dists/wheezy/main/binary-i386/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead."