Андрей Смирнов
Время чтения: ~9 мин.
Просмотров: 0

Обновление PHP на хостинге — подробное руководство

PHP представляет собой серверный язык, который широко используется для веб-разработки. Обновление PHP позволяет выполнять в три раза больше запросов, одновременно повысив безопасность сайта.

Obnovlenie-PHP-na-servere1.png

Ubuntu

Чтобы обновить PHP, на операционной системе Ubuntu на ядре Linux должна стоять старая версия — PHP 5. В случае использования Apache применяется модуль mod_php, для Nginx — PHP-FPM.

Помимоэтого, перед установкой следует убедиться в том, что предварительно создан пользователь без root-прав, который может выполнять команды sudo.

Добавление пакетов PPA

В первую очередь необходимо добавить персональные пакеты архивов (PPA) — пакеты, обычно создающиеся в серверах-хранилищах (репозиториях). Найти бета-версии и модифицированные сборки можно на сайте launchpad.net. PPA для последней версии PHP можно найти у пользователя Ondřej Surý. 

sudo apt-get install software-properties-common python-software-properties
После авторизации в системе добавьте пакеты в APT-утилиты ОС с помощью команды:
sudo add-apt-repository ppa:ondrej/php

dobavlenierepozit-3.png

Далее, чтобы установка новой версии PHP прошла без проблем, необходимо обновить кэш локального пакета через sudo apt-get update.

Модуль Apache

Перед установкой обновляются все старые пакеты, исключая php5-mysql, который будет удален. Все пользователи MySQL должны повторно добавить двухсторонние биндинги PHP:

sudo apt-get install php7.0-mysql

Установка PHP производится с помощью команды:

sudo apt-get install php7.0

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

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

Для начала устанавливается новый пакет PHP-FPM командой

sudo apt-get install php7.0-fpm

В случае с MySQL необходимо повторить ту же операцию, что и пользователям Apache — обновить биндинги.

Пути сокетов у Nginx

Сервер использует сокет, чтобы взаимодействовать с PHP-FPM. По умолчанию новая версия языка использует указанный сокетами путь /var/run/php/php7.0-fpm.sock.

Процесс обновления

  1. В файле конфигурации default необходимо найти блок, который начинается с location ~ .php$ { и в нем строку fastcgi_pass unix:/var/run/php5-fpm.sock;. Ее нужно изменить на unix:/var/run/php/php7.0-fpm.sock.

  1. Выходим из редактора и сохраняем файл. Эту процедуру необходимо провести для всех виртуальных серверов, которые располагаются в директории /etc/nginx/sites-enabled.

  2. После завершения операции сервер перезагружается командой sudo service nginx restart.

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

Проверить PHP можно с помощью тестового файла, который нужно будет открыть или создать, если его нет. Для его создания подойдет редактор nano или любой другой. Открываем файл info.php в корневом каталоге.

Путь в Apache:

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

Для Nginx:

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

Туда необходимо скопировать следующий код:  phpinfo();

       phpinfo();   

Выходим из редактора и сохраняем файл. Чтобы проверить версию PHP, вводим в браузере адрес http://домен_или_IP/info.php. Информация появится на экране.

Если что-то работает некорректно, необходимо убедиться в правильности действий. Например, обновление в панели Vesta требует предварительного ввода следующей команды:

# git clone https://github.com/petranikin/mgrvphp.git     # cd mgrvphp    # bash mgrvphp

А уже потом ввести версию PHP для начала процесса.

CentOS

Для CentOS 7 инструкция несколько отличается:

  1. В первую очередь необходимо добавить репозиторий EPEL с помощью команды yum install epel-release.

  2. После этого пользуемся комбинацией rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm, и только после этого обновляем PHP через команду yum install php70w.

Debian

Перед установкой новой версии PHP на Debian необходимо обновить все текущее программное обеспечение. Сделать это можно с помощью команд:

sudo apt-get update    sudo apt-get upgrade

Как и с предыдущими случаями, в первую очередь необходимо включить PPA. Чтобы сделать это, импортировав ключ подписи, используем команду:

wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -    echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list

Если после этого выявляется, что в системе не хватает некоторых важных пакетов, их необходимо добавить с помощью sudo apt-get install ca-certificates apt-transport-https.

Чтобы начать установку PHP, запустите процесс командой:

apt-y install php php-common

Проверить установленную версию можно через php -v.

4-2.png

Обновление для популярных CMS

Обновление PHP для CMS площадок обуславливается двумя факторами.

  • Увеличением скорости работы. По сравнению со старыми версиями новая будет работать в 3-4 раза быстрее, что позволяет повысить ранжирование сайта в поиске;

  • Повышениембезопасности. Снижаются риски взлома, причинения ущерба репутации сайта.

Как сменить версию PHP в ISPmanager, читайте в этой статье.

WordPress

Для WordPress обновление PHP требуется по упомянутым ранее причинам. Если вдруг желания обновлять его нет, следует помнить, что платформа хорошо работает даже с версией 5.6.20, то есть располагает отличной обратной совместимостью. Поэтому, нужно ли обновлять PHP, нужно решать индивидуально.

Что сделать перед обновлением

  • Резервное копирование сайта, обеспечивающее возможность возврата на старую версию без потерь.

  • Обновление WordPress, тем и плагинов — рекомендуется делать регулярно, потом стоит проверить корректную работу сайта.

  • Проверка совместимости с PHP — для этого можно использовать плагин PHP Compatibility Checker.

  • Устранение проблем совместимости — неподходящие плагины и темы придется поменять или попытаться исправить ситуацию, обратившись к их разработчикам.

Чтобы плагины и темы работали нормально после обновления, их разработчики должны иметь хорошую репутацию. Если после обновления PHP не работает сайт, проблема может крыться именно в них. Служба поддержки WordPress не гарантирует такую совместимость с новой версией PHP, поэтому подготовительный этап рекомендуется не пропускать.

Чтобы обновить PHP на WordPress, необходимо открыть настройки хостинга и внести изменения самостоятельно в панели управления или обратиться в техническую поддержку с обращением.

Obnovlenie-PHP-na-servere-wp.png

Попросить обновить версию PHP в WordPress можно с помощью обращения, которое предлагает служба поддержки платформы.

Joomla

Для повышения безопасности сайта любая CMS будет рекомендовать обновить PHP. Так, например, в справке Joomla будет написано: «Проект Joomla рекомендует обновить ваш сайт до версии PHP 7.1 или более поздней версии».

Чтобы обновление до последних версий PHP прошло без проблем, необходимо убедиться в том, что на сайте стоит как минимум Joomla 3.5. Иначе система будет работать некорректно.

Самый простой способ обновить версию PHP — обратиться в поддержку хостинга. Зачастую они это делают бесплатно и достаточно быстро. Если же хочется сделать все самому, достаточно перейти в панель управления и начать процедуру в настройках на хостинге.

Остальные способы представлены ниже.

Обновление через .htaccess

Чтобы обновить все таким образом, достаточно создать новый файл в корневом каталоге сайта или отредактировать существующий. Необходимо добавить только одну строчку.

Версия 5.6:

AddHandler application/x-httpd-php56 .php .php5 .php4 .php3

Версия 7.0:

AddHandler application/x-httpd-php70 .php .php5 .php4 .php3

VPS или сервер

Обновить PHP на сервере, если используется Ubuntu 14.04 и ниже, можно с помощью команды:

sudo apt-get upgrade    sudo apt-get dist-upgrade

Для версии 5.6 достаточно использовать sudo apt-get install php5 и после перезапустить сервер.

Для исправной работы версии PHP 7, как и в случае с инструкцией для Ubuntu, потребуется дополнительно обновить mod_php для Apache и PHP-FPM для Nginx соответственно. Порядок действий для этого представлен выше.

Битрикс

Чтобы обновить PHP в веб-окружении Битрикс, необходимо:

  1. Чтобы попасть в меню, подключаемся к серверу по SSH через пользователя с root-правами. Выбираем пункт 1. Manage servers in the pool.

  2. В следующем списке нажимаем на 8. Update PHP and MySQL.

  3. Выбираем Update PHP to version 7.1 и подтверждаем действие, введя «y» («yes»).

  4. Меню отразит задание и его идентификатор, а также статус выполнения.

  5. Чтобы узнать, завершен ли процесс, в основном меню нажимаем 10. Background pool tasks. Должна появиться строка с finished.

После любого обновления некоторые приложения могут перестать работать. Это связано с их версией выпуска. Если они запущены в Marketplace после лета 2016 года, то никаких проблем не возникнет. Более ранние версии имеют другие механизмы защиты, которых может оказаться недостаточно для работы с обновленным PHP.

Программисты делятся на два типа: консерваторы, для которых переход на новую версию равносилен перелёту на другую планету (если читаешь это из Windows XP — поздравляю, это ты); и Викторы Цои, чьи сердца и глаза требуют перемен, и обновляют всё и вся при первой возможности. Если ты второго типа, и у тебя уже стоит последняя версия PHP на последней LTS версии Ubuntu, но покоя не даёт то, что расширение Intl использует устаревшую версию библиотеки ICU, или тебе просто понравились картинки из «Аватара» — добро пожаловать под кат! (Картинок больше не будет.)yyb2mrkb7b-w_f5kqxos8hjezro.jpeg

Ну и зачем это?

Библиотека ICU с каждым релизом добавляет поддержку стандартов транслитерации для различных языков, добавляет новые функции и возможности, фиксит баги. Пока неизвестно, по какой причине PHP нерегулярно обновляет ICU в расширении Intl. Поэтому приходится всё брать в свои руки.

Поиск решения

Быстрый поиск по гуглу не дал внятных решений. Детальный тоже. В общем и целом пэхэпэшным программистам по барабану, какую версию ICU использует Intl. Но только не нашим! Отчаявшись искать в англоязычном сегменте интернета, совершенно случайно набрёл на запись русского блогера Сергея Стоянова, где он объясняет процесс обновления ICU в PHP 5 для Ubuntu 14.04. В PHP 7 процесс сильно отличается, но общая последовательность действий остаётся такой же: удаляем Intl; собираем новую версию ICU; устанавливаем Intl, ткнув его носом, где искать ICU; включаем Intl в PHP; открываем шампанское. Также сильно помогли комментарии к статье (особенно комментарий Антона Минина и его shell скрипт).

Версии ICU

Проверить последнюю версию ICU можно на их официальном сайте. На данный момент (февраль 2018) последний релиз — 60.2. Чтобы проверить, какую версию ICU использует php7.0-intl, напиши в терминале

php -i

и прокрути до списка установленных модулей. Найди там раздел, озаглавленный «intl». У меня там было: Мягко говоря, не айс — версия 55.1 была выпущена в первой половине 2015-го, и с тех пор успела обновиться ещё 5 раз. Нужно же что-то делать!

Решение

  1. Проверяем полное название расширения Intl (для PHP 7 обычно это php7.0-intl):
    sudo dpkg --get-selections | grep -v deinstall | grep php
  2. Удаляем расширение Intl:
    sudo apt-get remove php7.0-intl
  3. Устанавливаем phpize:
    sudo apt install php7.0-dev
  4. Устанавливаем git (если его нет):
    sudo apt install git
  5. Устанавливаем icu-install.sh (в оригинальном скрипте было 2 ошибки, поэтому здесь использую мой форк):
    git -C /tmp clone https://gist.github.com/siffash/76676186de0ffc6eb6cbf89abc7a5e2f icu-install
  6. Разрешаем скрипту запускаться:
    sudo chmod +x /tmp/icu-install/icu-install.sh
  7. Проверяем доступные версии ICU:
    sudo /tmp/icu-install/icu-install.sh versions
  8. Выбираем последнюю (60.2) и запускаем установку:
    sudo /tmp/icu-install/icu-install.sh install 60.2
  9. Подключаем intl.so в php.ini:
    sudo touch /etc/php/7.0/cli/conf.d/20-intl.ini sudo bash -c 'echo "extension=intl.so" > /etc/php/7.0/cli/conf.d/20-intl.ini' sudo touch /etc/php/7.0/apache2/conf.d/20-intl.ini sudo bash -c 'echo "extension=intl.so" > /etc/php/7.0/apache2/conf.d/20-intl.ini'
  10. Перезапускаем Apache:
    /etc/init.d/apache2 restart
  11. Удаляем phpize:
    sudo apt-get purge --auto-remove php7.0-dev
  12. Удаляем shell скрипт:
    rm -rf /tmp/icu-install

Теперь проверяем версию ICU в

php -i

и прыгаем до потолка: P.S. Если у тебя есть англоязычные друзья и ты спешишь поделиться с ними радостной вестью, вот тебе версия на англицком из моего англоязычного блога.Используемые источники:

  • https://eternalhost.net/base/vps-vds/obnovlenie-php
  • https://habr.com/post/348726/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации