Как обновить версию PHP для вашего WordPress-сайта (и почему стоит это делать)

Клиенты хостинг-компаний обычно могут легко изменять/обновлять версии PHP для своих WordPress-сайтов отдельно через панель управления. Нередко хостинги выставляют ограничения по минимально поддерживаемым версиям (особенно это касается администрируемых WP-хостингов).

Хостинги настоятельно рекомендуют устанавливать PHP 7.4 — в идеале последнюю версию PHP 8.0, поскольку она намного быстрее, безопаснее и удобнее, чем ее предшественники. В некоторых конфигурациях она работает в 3 раза быстрее.

Как вы, возможно, слышали, PHP перешел к более предсказуемому графику выпуска новых релизов. Каждая новая версия активно поддерживается в течение 2 лет и получает дополнительный год критических обновлений безопасности. Администрируемые WordPress-хостинги обычно следуют тому же графику, удаляя версии PHP, когда они достигают EOL (конца срока службы).

Почему важно обновлять версию PHP для WordPress-сайта?

Есть две причины: скорость и безопасность.

По тем же самым причинам вы обновляете и сам WordPress, ведь вам нужно получить патчи, закрывающие дыры в безопасности. Это актуально и для PHP. Обновление PHP приводит к существенному увеличению скорости. PHP 7.0, к примеру, стал огромным шагом вперед – производительность увеличилась почти в 2 раза по сравнению с версией 5.6. С каждой новой версией PHP мы наблюдаем некоторый прирост производительности по сравнению с прошлым релизом.

Не знаете, какая версия PHP используется у вас? Если у вас установлен WordPress 5.0 и выше, вы можете узнать ее в разделе Site Health.

Как быть, если сайт сломался?

Проблемы, связанные с обновлением версий PHP, появляются в том случае, когда в коде на вашем сайте используются старые функции, больше не поддерживаемые новыми версиями PHP. Обычно виновником выступает активная тема или плагин.

Как обновить версию PHP в WordPress?

Этот процесс зависит от вашего хостинг-провайдера, а именно от используемой панели управления. Мы рассмотрим процедуру обновления PHP через cPanel.

Заходим в cPanel. Ищем раздел Software и выбираем «Select PHP Version»:

На следующей странице в самом верху вы увидите текущую версию PHP вашего сайта:

Если щелкнуть по текущей версии, вы сможете выбрать любой доступный PHP-релиз.

Чтобы сохранить изменения, нажмите «Set as current».

Да, далеко не все провайдеры используют cPanel. Многие хостинги предлагают свои собственные панели управления. Шаги там потребуются примерно те же самые.

Что делать после обновления PHP?

Обычно ничего делать не нужно – все должно работать в штатном режиме. Однако мы рекомендуем проверить, весь ли функционал сайта работает как положено.

Изучите работу фронтенда и бэкенда сайта. Бывают ситуации, когда обновление версии PHP приводит к поломке сайта. По этой причине перед обновлением версии PHP лучше всего создать резервную копию сайта.

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

Не сработало? Тогда лучше обратиться к хостинг-провайдеру. В некоторых случаях вам придется откатиться к прошлой версии PHP.

Включаем режим отладки

Вы всегда можете включить режим отладки в WordPress, чтобы понять, в чем заключается проблема. Вам нужно подключиться к своему сайту по SFTP и отредактировать wp-config.php.

Ищем строку /* That’s all, stop editing! Happy blogging. */

Перед ней вставляем следующее:

define( 'WP_DEBUG', true );

define( 'WP_DEBUG_LOG', true );

define( 'WP_DEBUG_DISPLAY', false );

Если этот код уже есть в файле wp-config.php, но для него стоит значение false, меняем его на true. Это позволит включить режим отладки – все будет записываться в /wp-content/debug.log. Вы также увидите все предупреждения и ошибки в админке WordPress.

Важно: не забудьте отключить отладку, когда вы закончите технические процедуры, поскольку эти файлы имеют тенденцию быстро разрастаться.

Как выглядят ошибки?

Увы, в экосистеме WordPress есть тысячи плагинов и тем, а потому мы чисто физически не способны перечислить все ошибки, с которыми вы можете столкнуться. Обычно ошибки появляются из-за того, что код (функции, синтаксис и т.д.) несовместим с используемой вами версией PHP. Пример того, что вы можете увидеть:

500: Fatal error: Uncaught Error: A semicolon (';') is expected here. in /www/sitename/public/wp-content/plugins/bbpress-shortcodes/bbpress-shortcodes.php:177

Здесь мы видим, что проблема связана с плагином bbPress Shortcodes.

Самый плохой расклад – когда у вас есть проблема совместимости двух или нескольких плагинов. Если это произошло, мы советуем сделать следующее:

  1. Обновить свои плагины и темы до последних версий.
  2. Обратиться к разработчикам плагина или темы, чтобы они добавили/исправили поддержку PHP4 (или выше).
  3. Найти альтернативный плагин, который может дать ту же самую функциональность и будет совместим с новой версией PHP.
  4. Нанять WordPress-разработчика, чтобы решить проблему.
  5. Откатиться к более ранним версиям PHP, чтобы понять, будет ли работать плагин. Если так, то можно сидеть на ранних версиях, пока разработчик не обновит код. Но мы не рекомендуем такой подход.
  6. Вручную поправить код плагина, ориентируясь на советы в сети по конкретной ошибке.

Источники: kinsta.com, themeisle.com

Блог про WordPress
Комментарии: 9
  1. Евгений

    А я, чтобы обновить PHP просто обратился к помогателям на Timeweb (хостинг, на котором сделан мой сайт), и они всё помогли сделать. От меня нужно было лишь моё согласие, что они переносят мой сайт на новый сервер, где стоит обновлённый PHP. Такие вот дела.

    1. Дмитрий (автор)

      Так тоже можно. Но для большей гибкости лучше иметь доступы к панели управления и там менять.

  2. Эдвард

    Здравствуйте, Дмитрий! Как поживаете? Я вот тоже недавно решил обновить все выпуски PHP с 7.4 на 8.3. На 2-х поддоменах с Вордпресом (одна для создания продающих страниц, другой — площадка обучения для учеников) всё обновилось без неполадок. На поддомене со службой рассылки вышла ошибка серьёзная, но я нашёл причину — есть такое старое расширени WP Typograph Lyte для поправки отображения кавычек, скобок, чёрточек. Убрал его и всё тоже обновилось.

    Но вот с основным доменом всё никак ни ладится. Выходит сообщение: There has been a critical error on your website и белый экран. Включал wp_debug и он ничего не показал. Попробовал следующее: сменить шаблон оформления на другой и более новый — не помогло, сначала выключил все, а потом поочерёдно даже удалил расширение за расширением (плагины) — не помогло. Даже новую базу данных создал (думал, вдруг в ней дело может быть), перевёл на неё работу площадки в wp-config.php — тоже не помогло. Где ещё можно копнуть и глянуть отчёты об ошибках? Это же где-то какой-то кусочек php-кода не работает? Благодарю за прочтение.

    1. Дмитрий (автор)

      Приветствую!
      Выживаем как можем.
      В плане проблемы с PHP еще можно попробовать задать
      define(‘WP_MEMORY_LIMIT’, ‘256M’);
      в wp-config, для 8.3 может быть критично.
      Бывает, что на сервере в отчетах еще есть. Можно копнуть в панели вашего хостинга и там поглядеть. Бывает, что там дополнительно можно что-то узнать.
      А так вы уже все сделали, что обычно требуется… Если ничего не помогло, то последнее, что остается — спросить у поддержки.

      1. Эдвард

        Спасибо за совет! Попробовал увеличить размер памяти, но, к сожалению, и это не помогло. Кстати, на поддоменах везде она равен 128 — даже не пришлось увеличивать до 256. Отчёты глянул: тоже ничего ясного не нашёл.

        Я думаю так сделать: ещё создать поддомен и туда поставить WordPress. И туда копировать расширение за расширением с их настройками, ту же тему оформления поставить. Ну, то есть последовательно воссоздать то же содержимое. Возможно, базу данных загрузить ту же или по отдельным таблицам. И посмотреть, даст ли это что-нибудь или нет.
        Как сделаю и оценю итоги, отпишусь.

        Ещё вопрос: Вы не помните, где я у Вас прошлый свой отзыв оставлял? С какой-то неполадкой тоже обращался, но не помню с какой и не отчитался о состоянии. :) Щелкнул в письме-уведомлении по ссылке после Manage your subscriptions, чтобы глянуть подписки на отзывы, но вышла 404 ошибка.

        1. Дмитрий (автор)

          У меня с PHP тоже были разные проблемы при обновлении до свежей версии.
          Но там моя тема вообще перестала работать. Я не стал разбираться — просто поставил другую.
          И еще были проблемы с двумя плагинами, в которых пришлось дописывать новые строки кода (старые функции менять на новые, т.к. старые уже не поддерживались, в новой версии PHP они по-другому именовались).
          В итоге вручную дописал два плагина. Тогда все заработало. Но там были сообщения об ошибках при включенном отчете wp_debug, потому там легко удалось выявить источник проблемы.
          Если же отчеты ничего не показывают, то тогда все существенно усложняется.
          В одном случае мне как раз лимит памяти помог — увеличил его и заработало.
          А по поводу комментариев — были вот в этих статьях:

          https://oddstyle.ru/wordpress-2/novosti-wordpress/vyshel-wordpress-6-8-s-obnovleniyami-bezopasnosti-uluchsheniyami-proizvoditelnosti-i-dorabotkami-redaktora.html

          https://oddstyle.ru/wordpress-2/novosti-wordpress/vyshel-wordpress-5-5-1-s-vremennoj-podderzhkoj-ustarevshix-globalnyx-peremennyx-javascript.html

          Могу найти и более ранние, если необходимо.

          1. Эдвард

            Да, по 1-ой ссылке неполадка с правкой изображений внутри WordPress — потом надо будет вернуться к этому. :)

            Я тут на новый обслуживатель (сервер) переехал и решил заодно всё обновить остальное, в том числе шаблон новый поставить. Дошло, наконец, что старый никуда не годится. Но тут эта загвоздка с PHP нарисовалась.

            Я в службу поддержки писал. Они тупо wp_debug включили и сказали то же, что увидел я. Началь шаманить с базами данных: чистую попробовал — тоже не помогло. (думал, вдруг в базе ошибка). В итоге удалил всё содержимое дочиста, скачал свежий WordPress для установки и… вы представляете… он с PHP 8.4 отказывается устанавливаться: та же ошибка вылазит — Critical Error. Если даже новый движок с чистой базой данной не ставится, значит, точно дело не в расширениях и шаблонах. :) Написал об этом в поддержку — жду, что скажут.

          2. Эдвард

            Ну что ;, я наконец-то нашёл ошибку. Новая установка WordPress помогла её обнаружить. И была эта злосчастная ошибка (кто бы мог подумать) в wp-config.php.

            Дело в том, что я для большей безопасности поднял его на уровень выше: он был не в папке с другими данными (есть такая мера). Вот установил я новый WordPress и внутри папки появился новый wp-config.php и к нему, по-видимому, стал обращаться движок. И… всё заработало. :)

            Ради любопытства решил сравнить содержимое обеих записей настроек wp-config.php. Оказалось, что всему виной была такая строчка: @ini_set(‘display_errors’, 0);

            /** Sets up WordPress vars and included files. */
            require_once( ABSPATH . ‘wp-settings.php’ );
            error_reporting(0);
            @ini_set(‘display_errors’, 0); < — ВОТ ЭТО ВЫЗЫВАЛО ОШИБКУ!!!

            Видимо, когда-то вручную вставил её как одну из мер безопасности, не до конца изучив. Как только её убрал, то всё заработал как надо. Теперь успешно всё обновилась до 8.4. Так что такие дела.

          3. Дмитрий (автор)

            Понятно, фиг догадаешься, что именно там кроется ошибка.
            Но спасибо за пояснение!
            Буду иметь в виду, что и wp-config порой является источником ошибок (редкий кейс, на самом деле).

Добавить комментарий для Эдвард Отменить ответ

Получать новые комментарии по электронной почте.