Зачем обновлять PHP на хостинге и что это даёт сайту
Обновлять PHP нужно по двум причинам: старые версии перестают получать исправления уязвимостей, а новые, как правило, работают быстрее на том же тарифе. Третья причина появляется со временем — свежие версии CMS и плагинов просто отказываются работать на устаревшем PHP. Переключается версия в панели хостинга за минуту, но делать это вслепую нельзя: старые плагины и темы могут сломаться. Ниже — как узнать свою версию, до какой обновляться и как перейти без простоя.
Что такое PHP и при чём тут хостинг
PHP — язык, на котором работают WordPress, 1С-Битрикс, OpenCart и большинство других CMS. Когда посетитель открывает страницу, сервер выполняет PHP-код сайта: тот достаёт данные из базы, собирает из них страницу и отдаёт браузеру. Программа, которая выполняет этот код, установлена на хостинге, и у неё есть версия.
В панели любого хостинга есть строчка «Версия PHP». Большинство владельцев сайтов не заглядывали туда ни разу — сайт же работает, зачем трогать. Между тем от этой строчки зависят и скорость сайта, и его безопасность.
Хостер обычно держит на сервере несколько версий сразу, и выбор между ними — за вами. Сам он переведёт сайт на новую версию разве что тогда, когда совсем уберёт старую, — и к этому моменту лучше быть готовым.
Почему версии PHP устаревают
У каждой ветки PHP ограниченный срок жизни. Новая версия выходит примерно раз в год, и каждая проходит три этапа.
| Этап | Что выпускают разработчики PHP | Что это значит для сайта |
|---|---|---|
| Активная поддержка | Исправления ошибок и уязвимостей | Можно спокойно работать |
| Только исправления безопасности | Заплатки для критичных уязвимостей, без прочих правок | Работать можно, но пора планировать переход |
| Поддержка прекращена | Ничего | Найденные уязвимости остаются открытыми навсегда |
Сроки этапов для каждой ветки опубликованы на официальном сайте php.net в таблице поддерживаемых версий. Сверяйтесь с ней, а не со статьями: набор актуальных версий меняется каждый год, и ветки, свежие сегодня, через пару лет окажутся в последней строке. Правило простое: если вашей версии в таблице поддерживаемых уже нет, сайт — работающий, но неохраняемый склад.
Некоторые хостеры и сборки операционных систем сами выпускают заплатки для старых версий, но рассчитывать на это без явного подтверждения от поддержки не стоит.
Что даёт обновление PHP
Безопасность
Уязвимости находят и в самом PHP, и в его расширениях. Для поддерживаемых веток выходят исправления, для снятых с поддержки — нет: любая дыра, найденная после окончания поддержки, останется открытой.
Звучит абстрактно, пока не коснётся лично. К нам обратился владелец сайта на WordPress, который взламывали трижды за полгода: чистили, восстанавливали из бэкапа — через месяц снова редиректы на казино. Сайт крутился на PHP 7.2, давно снятом с поддержки. Перенесли проект на актуальную ветку, обновили плагины — взломы прекратились.
Обычно срабатывает связка: старый PHP не даёт обновить CMS и плагины, а уязвимости в них и становятся входной дверью. Остальные меры собраны в статье о том, как защитить сайт от взлома.
Скорость
Разработчики PHP от версии к версии оптимизируют ядро: тот же код выполняется быстрее и расходует меньше памяти. Особенно заметным был переход с пятой ветки на седьмую; восьмая продолжила эту линию и получила JIT-компилятор. Конкретный выигрыш зависит от сайта — у одного он виден невооружённым глазом, у другого почти незаметен, — поэтому измеряйте время ответа сервера до и после.
Это самое дешёвое ускорение сайта из всех возможных: без единой правки в коде и без смены тарифа. Одному интернет-магазину на OpenCart мы таким обновлением заметно сократили время генерации страницы — бесплатно, за один вечер. Что ещё влияет на скорость, смотрите в чек-листе как ускорить сайт.
Совместимость с новыми версиями CMS
У каждой CMS и у каждого плагина есть минимальная версия PHP. Разработчики постепенно поднимают эту планку, и в какой-то момент обновить движок или модуль оплаты становится невозможно, пока не обновлён PHP. Сайт застревает: старый PHP не даёт обновить CMS, старая CMS копит уязвимости. Чем дольше тянуть, тем больше шаг, который придётся сделать за один раз, и тем выше шанс поломок.
Как узнать версию PHP на своём сайте
- В панели хостинга. В ISPmanager, cPanel, Plesk и собственных панелях хостеров есть раздел вроде «Настройки PHP» или «Выбор версии PHP». Обычно версия меняется одним выпадающим списком, отдельно для каждого сайта.
- В админке CMS. В WordPress версия PHP показана в разделе «Здоровье сайта», в 1С-Битрикс — в проверке системы, в других движках — на странице сведений о системе.
- У техподдержки хостера или разработчика. На такой вопрос отвечают за пару минут.
Если выбора версии в панели нет вовсе или самая свежая из предложенных уже снята с поддержки, это тревожный звонок: хостер сам сидит на старье. В этом случае обновление PHP превращается в перенос сайта на другой хостинг.
До какой версии обновлять PHP
Не обязательно до самой последней. Свежий релиз в первые месяцы может не поддерживаться частью плагинов и модулей. Ориентир — самая новая версия из поддерживаемых, с которой официально совместимы ваша CMS и все установленные дополнения.
| Ситуация | Что делать |
|---|---|
| PHP снят с поддержки, CMS и плагины свежие | Обновлять сейчас: проверка на копии и переключение |
| PHP получает только исправления безопасности | Запланировать переход на ближайшие месяцы |
| PHP актуальный, вышла новая версия | Не спешить: дождаться, пока совместимость подтвердят авторы CMS и плагинов |
| CMS давно не обновлялась | Сначала обновить CMS и плагины на копии, затем PHP — иногда в несколько шагов |
| Сайт самописный или сильно доработан | Нужен разработчик: код проверяют и правят под новую версию |
| На сайте есть закодированные платные модули | Уточнить у автора модуля, есть ли сборка под новую версию PHP |
Как обновить PHP без поломок: пошагово
Главный риск — совместимость. Старые плагины и темы, особенно купленные лет пять назад и заброшенные авторами, могут не подружиться с новой версией: где-то отвалится форма заказа, где-то посыпятся ошибки на странице. Да, так бывает — и именно поэтому переключать версию на живом сайте наугад нельзя.
- Сделайте свежую резервную копию файлов и базы данных и убедитесь, что из неё можно восстановиться. Подробности — в статье про бэкапы сайта.
- Посмотрите в документации CMS, какие версии PHP поддерживает ваша сборка.
- Разверните тестовую копию сайта на поддомене или локально.
- Обновите на копии CMS, тему и плагины до последних версий — часто они уже готовы к новому PHP.
- Переключите на копии версию PHP и прокликайте ключевые сценарии: корзину, формы, личный кабинет, оплату, поиск, вход в админку.
- Загляните в журнал ошибок PHP: предупреждения об устаревших функциях подскажут, какие модули скоро перестанут работать.
- Если что-то сломалось — обновите или замените проблемный плагин и повторите проверку.
- Переключите боевой сайт в спокойное время, когда посетителей меньше, и сразу пройдите те же сценарии.
- Несколько дней следите за журналом ошибок и за тем, приходят ли заявки и заказы.
Обычно вся процедура занимает от пары часов до пары вечеров.
Что обычно ломается после смены версии
- Заброшенные плагины и темы. Авторы перестали их обновлять, и код использует функции, которых в новом PHP уже нет.
- Доработки «на коленке». Правки, когда-то внесённые прямо в файлы движка или темы.
- Закодированные модули. Платные дополнения, защищённые шифрованием, привязаны к конкретным версиям PHP и требуют отдельной сборки.
- Расширения и настройки. У каждой версии свой набор подключённых расширений и свои лимиты памяти и времени выполнения. Если сайту нужно расширение, которое не включено, он выдаст ошибку.
- Фоновые задания. Задачи по расписанию могут запускаться другой версией PHP — её переключают отдельно, в настройках планировщика.
Что делать, если сайт сломался после обновления
Не паниковать: версия переключается обратно так же быстро. Верните прежнее значение в панели — сайт заработает, как раньше, а у вас появится время разобраться. Данные при смене версии не меняются, так что восстанавливать базу из копии обычно не требуется.
Причину подскажет журнал ошибок: в нём указаны файл и строка, на которой код споткнулся, а по пути к файлу видно, какой плагин виноват. Белый экран или код 500 после переключения — почти всегда несовместимый модуль. Что означают такие коды, мы разбирали в статье про ошибки 500, 502, 503 и 504.
Частые ошибки при обновлении PHP
- Переключают на живом сайте без проверки. И узнают о сломанной форме заказа от клиентов через неделю.
- Проверяют только главную. Главная открывается, а оплата и личный кабинет — нет.
- Обновляют PHP, но не CMS. Или наоборот. Обновлять нужно связку целиком.
- Откладывают годами. Переход через несколько версий сразу всегда тяжелее, чем регулярные небольшие шаги.
- Оставляют старую версию ради одного плагина. Дешевле заменить плагин, чем держать весь сайт на неподдерживаемом PHP.
- Не делают бэкап. Откат версии спасает почти всегда, но не тогда, когда вместе с PHP обновили движок и базу.
Чек-лист обновления PHP
- Текущая версия PHP известна и сверена с таблицей поддерживаемых версий на php.net.
- Выбрана целевая версия, которую поддерживают CMS и все плагины.
- Сделан свежий бэкап файлов и базы, восстановление проверено.
- CMS, тема и плагины обновлены на тестовой копии.
- На копии с новой версией PHP пройдены корзина, формы, оплата и вход в админку.
- Журнал ошибок на копии чистый.
- Боевой сайт переключён в спокойное время и проверен по тем же сценариям.
- Проверена версия PHP для заданий по расписанию.
Коротко
Версии PHP поддерживаются ограниченный срок: после его окончания уязвимости никто не закрывает, а новые версии CMS перестают устанавливаться. Актуальные ветки смотрите в таблице на php.net, обновляйтесь до самой новой из тех, что поддерживают ваша CMS и плагины, и всегда начинайте с бэкапа и тестовой копии.
Если своего разработчика нет, мы в CasperLab делаем такие обновления в рамках поддержки: проверяем совместимость на копии, обновляем PHP и CMS, замеряем скорость до и после. А если ваш хостер до сих пор не предлагает свежие версии PHP — поможем подобрать хостинг, где эта проблема не возникает в принципе.
Подобрать хостинг в CasperLab
Поможем подобрать решение под вашу задачу и рассчитаем стоимость без обязательств.
Подобрать хостинг