НОВИНА
Checkout Files Upload за WooCommerce приема файлове от всеки. Вижте дали Вашият е засегнат
WordPress

Нова PHP версия за WordPress в cPanel, без да счупите сайта

# ЕтикетиcPanelСкорост
Екипът на WPhost15 мин четене

WordPress работи върху PHP, а версията на PHP се избира на сървъра, не в самия сайт. Някои сайтове работят с версия, която отдавна не получава поправки за сигурност, защото никой не я е сменял, откакто са направени. Смяната на версията в cPanel отнема няколко клика, но ако темата или някой плъгин още не са готови за новата версия, сайтът може да спре.

В това ръководство ще видите как да разберете с коя версия работи сайтът, коя да изберете и какво да проверите преди промяната. После ще я смените в cPanel и ще проверите дали всичко работи. Ако нещо се счупи, ще знаете как да се върнете към старата версия.

Защо версията на PHP има значение

Всяка версия на PHP има срок на поддръжка. Според php.net един клон се поддържа изцяло две години, после още две години получава само поправки за критични проблеми със сигурността, а след това излиза от поддръжка. Сайт с версия извън поддръжка може да остане изложен на дупки, които никой вече няма да поправи.

WordPress препоръчва хостингът да е на PHP 8.3 или по-нова версия. На страницата с изискванията си той посочва, че още работи с PHP 7.4, но добавя, че тези стари версии са достигнали края на поддръжката си и могат да изложат сайта на уязвимости.

Втората причина е скоростта. По думите на WordPress PHP става по-ефективен с всяка нова версия, така че сайтът може да се зарежда по-бързо. Колко по-бързо, зависи от сайта и не може да се обещае предварително.

Таблицата показва какво пише на страницата на php.net към датата на това ръководство. Тя се променя, затова я отворете, преди да изберете.

Версия на PHPПоддръжка според php.net
8.5Активна поддръжка до 31 декември 2027, поправки за сигурност до 31 декември 2029
8.4Активна поддръжка до 31 декември 2026, поправки за сигурност до 31 декември 2028
8.3Само поправки за сигурност, до 31 декември 2027
8.2Само поправки за сигурност, до 31 декември 2026
8.1Извън поддръжка от 31 декември 2025
8.0Извън поддръжка от 26 ноември 2023
7.4Извън поддръжка от 28 ноември 2022

Ако се колебаете коя да изберете, започнете от 8.3. Това е най-ниската версия, която WordPress препоръчва, и според таблицата получава поправки за сигурност до 31 декември 2027. По-новите версии се поддържат по-дълго, но първо проверете дали всичко на сайта е готово за тях.

Как да разберете с коя версия работи сайтът

Версията се вижда в админа на WordPress. Отворете Tools > Site Health, преминете в раздела Info и разгънете секцията Server. Редът PHP version показва версията, с която сайтът работи в момента. В админа на български пътят е „Инструменти“, „Състояние на сайта“, „Информация“ и „Сървър“, а редът се казва „Версия на PHP“.

В същата секция са и лимитите на PHP, като PHP memory limit и Upload max filesize. След смяната те могат да се различават, особено в Select PHP Version, където настройките са отделни за всяка версия, затова си ги запишете.

В раздела Status на същата страница WordPress може да покаже съобщение като „PHP Update Required“ или „PHP Update Recommended“, ако версията е стара. Ако е 8.3 или по-висока, WordPress пише, че засега не е нужно да я сменяте.

Преди да пипнете каквото и да е, запазете сегашното състояние. В раздела Info има бутон „Copy site info to clipboard“. Натиснете го и поставете текста във файл на компютъра си. Там са версиите на WordPress и на PHP, лимитите на сървъра и активните плъгини с версиите им. След промяната направете същото и сравнете двата файла.

Какво да проверите, преди да смените версията

Самият WordPress работи с новите версии на PHP, но не може да знае дали Вашите теми и плъгини са готови за тях. Така пише и страницата му за обновяване на PHP. Затова проверката остава за Вас и започва с обновленията.

Първо обновете самия WordPress. Таблицата на WordPress за съвместимост показва с кои версии на PHP е тествана всяка негова версия, а старите версии не са тествани с най-новите версии на PHP. После обновете темата и плъгините от Dashboard > Updates и проверете дали сайтът работи. Изтрийте темите и плъгините, които не ползвате. Колкото по-малко код има, толкова по-малко неща могат да се счупят.

След това прегледайте активните плъгини. Списъкът с версиите им е в Tools > Site Health > Info, в секцията Active Plugins. За плъгините от wordpress.org отворете страницата на всеки и вижте кога е обновяван за последно, какво пише в списъка с промени и дали във форума има оплаквания за новата версия на PHP. Ако плъгинът не е тестван с последните три големи версии на WordPress, самата страница показва предупреждение. Такъв плъгин е първият кандидат за замяна.

Страницата показва и най-ниската версия на PHP, с която плъгинът работи (в кода му това е Requires PHP), но не и най-високата. „Tested up to“ се отнася за версията на WordPress, не на PHP. Нито в заглавната част на плъгина, нито в readme.txt има поле за най-високата тествана версия на PHP, така че отговора ще намерите в списъка с промени и във форума. За платени плъгини и теми извън wordpress.org прегледайте списъка с промени на производителя или го попитайте директно.

WordPress.org препоръчва за проверка плъгина PHP Compatibility Checker. На страницата на самия плъгин обаче пише, че той вече не се поддържа, че проверява съвместимостта само до PHP 8.0 и че не изпълнява кода, затова не вижда грешки, които се появяват при работа. За 8.3 и по-нови версии не помага, така че разчитайте на теста по-долу. Ако работите с разработчик, php.net описва несъвместимите промени във всяка версия, например за PHP 8.4.

Направете собствен бекъп на файловете и базата

Бекъпът има две части и WordPress ги описва поотделно. Файловете са папката на сайта, най-вече wp-content и wp-config.php. В базата са страниците, записите, коментарите и настройките.

Най-бързо е да свалите архив на папката на сайта от File Manager (Compress) и да експортирате базата от phpMyAdmin (Export, метод Quick, формат SQL). Ако хостингът е включил Backup Wizard в cPanel, изберете Back Up, после Partial Backup и свалете Home Directory и MySQL Databases. Копието на началната папка включва и пощата, затова може да е голямо.

Дори хостингът да прави автоматични бекъпи, ръководството на WordPress съветва да имате и собствено копие и да не разчитате единствено на хостинга, затова свалете пресен бекъп точно преди промяната. Бекъп и обновления можете да направите и от WP Toolkit в cPanel, ако го имате, както е описано в ръководството за WP Toolkit. Двете копия са описани стъпка по стъпка в ръководството как да преместите WordPress сайт на нов хостинг без престой.

Как да смените версията на PHP в cPanel

В зависимост от сървъра настройката в cPanel е на едно от две места. Едното е MultiPHP Manager. Другото е Select PHP Version, което се среща на сървъри с CloudLinux. И двете са в секцията Software, а хостингът може да е скрил единия или другия интерфейс.

Преди да натиснете каквото и да е, запишете коя версия е избрана сега. Ако хостингът е ограничил избора, може да не успеете да се върнете към старата версия без негова помощ.

MultiPHP Manager

  1. Отворете MultiPHP Manager в cPanel.
  2. В списъка с домейни маркирайте домейна на сайта.
  3. От менюто PHP Version изберете новата версия. Версиите, които хостингът препоръчва, са отбелязани с „Recommended“.
  4. Натиснете Apply.

В списъка са домейните, но не и псевдонимите им (parked domains). Всеки домейн може да има своя версия, затова, ако имате копие на сайта на тестов поддомейн, пробвайте новата версия първо там. Ако домейнът ползва PHP-FPM, неговата версия се сменя заедно с избраната.

Ако новата версия липсва в менюто, тя или не е инсталирана на сървъра, или не е разрешена за акаунта Ви. Само администраторът на сървъра може да я добави, така че попитайте хостинга. Ако е избрано „inherit“, домейнът ползва версията по подразбиране на сървъра, която задава само администраторът. За да я определяте Вие, изберете конкретна версия.

Select PHP Version

  1. Отворете Select PHP Version в секцията Software.
  2. От списъка с версии изберете новата.
  3. Задайте я като текуща с бутона „Set as current“.
  4. Отворете Extensions и сравнете кои разширения са включени за старата и за новата версия.

Разширенията и настройките на PHP се управляват поотделно за всяка версия, а промените се запазват автоматично. Затова включете липсващото разширение тук, за избраната версия. В списъка има и „native“. Така CloudLinux нарича версията, инсталирана от cPanel с EasyApache.

След промяната се върнете в Tools > Site Health > Info > Server и презаредете страницата. Редът PHP version трябва да показва новата версия. Ако показва старата, проверете дали сте избрали правилния домейн.

Проверете дали сайтът работи след смяната

Проверете най-важното в прозорец инкогнито, за да не виждате кеширана страница.

  • Началната страница и две-три вътрешни.
  • Входът в админа и страниците Posts, Pages и Plugins.
  • Формата за контакт, като изпратите тестово съобщение и проверите дали пристига.
  • При магазин, добавяне на продукт в количката и стигане до плащането.

За да видите грешките, включете лог. Добавете редовете по-долу във wp-config.php над реда „That's all, stop editing!“. Те записват грешките във файл извън папката на сайта и не ги показват на посетителите. Заменете ВАШИЯТ_ПОТРЕБИТЕЛ с потребителското име на cPanel акаунта си.

PHP
// wp-config.php, над "That's all, stop editing!"
// Временно, само за теста. След него върнете WP_DEBUG на false.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/home/ВАШИЯТ_ПОТРЕБИТЕЛ/wp-errors.log' );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Минете отново през сайта и прочетете лога. PHP създава файла при първата грешка. Ако го няма след проверката, най-вероятно няма грешки или потребителското име в пътя е сгрешено. Ако нямате Terminal, отворете файла от File Manager, в началната папка.

Bash
# cPanel > Terminal
# Последните 30 реда от лога.
tail -n 30 ~/wp-errors.log

# Само сериозните грешки.
grep "Fatal error" ~/wp-errors.log | tail -n 10

В лога има съобщения с различна тежест. „Deprecated“ не спира сайта. PHP го пише за код, който няма да работи в бъдещи версии. „Fatal error“ спира страницата и точно него търсите. В реда с него е и пътят до файла, в който е станала грешката. Ако в пътя има wp-content/plugins/ime-na-plugin, виновникът е този плъгин.

Ето пример. Функцията create_function() е премахната в PHP 8.0, затова стар плъгин, който още я извиква, дава точно такава грешка.

Текст
# Ред от лога (един ред, пренесен тук за по-лесно четене)
PHP Fatal error:  Uncaught Error: Call to undefined function
  create_function() in /home/user/public_html/wp-content/plugins/
  ime-na-plugin/a.php:88

Как да се върнете към старата версия

Ако сайтът се счупи, първо върнете старата версия. Отворете същия интерфейс, MultiPHP Manager или Select PHP Version, изберете записаната версия и потвърдете. WordPress съветва същото. Върнете версията от панела или помолете хостинга да го направи.

После не бързайте. Сайтът работи, а Вие имате лог и знаете кой плъгин е причината. Обновете го, заменете го или го махнете и опитайте отново с новата версия. Ако ползвате плъгин за кеширане, изчистете кеша му след връщането, за да не виждате стара страница с грешка. Ако не можете да влезете в админа, преименувайте папката на плъгина във wp-content/plugins от File Manager и WordPress ще го изключи. С WP-CLI това става с една команда, а ръководството за WP-CLI показва и как да върнете админа, когато плъгин го е счупил. Документацията на WordPress описва същото за всички плъгини наведнъж, като папката plugins се преименува на plugins_old.

Ако стане нещо по-лошо и трябва да възстановите бекъп, помолете хостинга първо да върне старата версия на PHP и чак после възстановете файловете и базата. Така съветва и страницата на WordPress за обновяване на PHP.

Чеклист

  • Записана е версията на PHP, с която сайтът работи сега, и е запазена информацията от Site Health.
  • WordPress, темата и плъгините са обновени, а ненужните са изтрити.
  • За важните плъгини е проверено кога са обновявани и какво пише във форума им за новата версия.
  • Има пресен бекъп на файловете и базата, свален на компютъра.
  • Новата версия е 8.3 или по-нова и я има в MultiPHP Manager или в Select PHP Version.
  • Включен е лог на грешките, а на екрана грешки не се показват.
  • Прегледани са началната страница, вътрешни страници, входът в админа и формата за контакт.
  • В лога няма Fatal error.
  • WP_DEBUG е върнат на false, а wp-errors.log е изтрит.

Ако не искате да се занимавате с това

Не всеки сайт има нужда от това веднага. Ако сайтът Ви вече работи с PHP 8.3 или по-нова, WordPress пише, че засега не е нужно да я сменяте. Колкото по-обновени са плъгините, толкова по-малък е рискът, когато дойде време за нова версия.

Ако не искате да следите това лично, при поддръжката на WordPress обновяваме системата, PHP и базата, където и да е хостнат сървърът Ви. Опишете сайта си във формата за запитване.

Често задавани въпроси

Защо версията на PHP е важна за сайта с WordPress?

Според php.net всеки клон на PHP има пълна поддръжка две години, после още две години получава само поправки на критични проблеми със сигурността и след това е извън поддръжка. Сайт на версия извън поддръжка може да остане изложен на дупки, които никой вече няма да поправи. По думите на WordPress PHP става по-ефективен с всяка нова версия, така че сайтът може да се зарежда и по-бързо, но колко точно, не може да се обещае предварително.

Коя версия на PHP да избера за WordPress?

WordPress препоръчва PHP 8.3 или по-нова. Ако не сте сигурни, започнете с 8.3, която е най-ниската препоръчана версия и според php.net получава поправки за сигурност до 31 декември 2027 г. По-новите версии се поддържат по-дълго, но първо проверете, че всичко в сайта е готово за тях.

Как да видя на коя версия на PHP работи сайтът ми?

В админа на WordPress отворете Tools > Site Health, раздела Info и секцията Server, където редът PHP version показва текущата версия. В българския админ пътят е „Инструменти“, „Състояние на сайта“, „Информация“ и „Сървър“, а редът се казва „Версия на PHP“. Преди промяната натиснете „Copy site info to clipboard“ и запазете текста във файл, за да сравните след това.

Как да разбера дали плъгините ми работят с новата версия на PHP?

Отворете страницата на всеки плъгин в wordpress.org и вижте кога е обновен последно, какво пише в списъка с промени и дали във форума има оплаквания за новата версия на PHP. Страницата показва най-ниската версия на PHP, с която работи плъгинът, но не и най-високата, а „Tested up to“ се отнася за WordPress. За платените плъгини и теми прочетете списъка с промени на производителя или го попитайте направо.

Помага ли PHP Compatibility Checker за PHP 8.3?

Не. Според страницата си плъгинът вече не се поддържа, проверява съвместимост само до PHP 8.0 и не изпълнява кода, така че не вижда грешките, които се появяват при работа на сайта. За 8.3 и по-новите версии разчитайте на проверка на самия сайт с включен лог на грешките.

Къде в cPanel се сменя версията на PHP?

В секцията Software на cPanel, в MultiPHP Manager или, на сървъри с CloudLinux, в Select PHP Version. В MultiPHP Manager отметнете домейна, изберете версията от менюто PHP Version и натиснете Apply. В Select PHP Version разширенията и настройките са отделни за всяка версия, затова след смяната сравнете в Extensions кои разширения са включени.

Как да разбера дали нещо се е счупило след смяната на PHP?

Минете в частен прозорец през началната страница, няколко вътрешни, входа в админа и формата за контакт, а при магазин през количката и плащането. Включете лог на грешките в wp-config.php, записан извън папката на сайта, и търсете „Fatal error“, защото „Deprecated“ не спира сайта. Пътят в реда с грешката, например wp-content/plugins/ с името на плъгин, сочи виновника.

Как да върна старата версия на PHP, ако сайтът се счупи?

Отворете същия инструмент, MultiPHP Manager или Select PHP Version, изберете версията, която сте записали преди промяната, и потвърдете. Ако ползвате плъгин за кеш, изчистете кеша му, за да не виждате стара страница с грешка. Ако трябва да възстановите и бекъп, първо помолете хостинга да върне старата версия на PHP и едва тогава възстановете файловете и базата.

Източници

# ЕтикетиcPanelСкорост
СподелетеFacebookXLinkedIn