Как да коригираме PHP Warning: Declaration of … should be compatible with …. при WordPress разширенията/темите

Сподели статията

Често срещаният проблем: PHP Warning:  Declaration of … should be compatible with ….  може да бъде лесно решен.

Ще се сблъскате с тази грешка, когато вашата хостинг компания прави обновявания на най-новата версия на PHP – 7. От една страна това е чудесно, защото ще разполагате с последния вариант на скриптовия език, но от друга – тази промяна носи със себе си и нежелани грешки.

Така изглежда wp-cli съобщението преди да бъде стопирана грешката.

И така след като вече е отстранена.

Друг недостатък на тази ситуация е, че въз основа на настройките за докладване на грешки, php може да покаже тези предупредителни съобщения на вашите потребители или във вашите log in файлове. Не е добра идея да изчерпваме свободното пространството заради подобни предупреждения. Също така потискането на всички известия ще затрудни същинското отстраняването на проблема, когато се наложи.

Има няколко опции как да поправите грешката.

Решения #1

Единият от начините за премахване на това php предупреждение е, като проверите кода и установите от къде идва известието. Уведомленията могат да произлизат от приставки или теми, съдържащи PHP класове.  Явно е настъпила промяна, която php 7 не възприема. Това е така, защото някои от параметрите не съвпадат с тези на техния родителски клас или обратното. Затова нагласете параметрите, така че да съответстват. Това решение е дългосрочно, ако имате пълен контрол върху кода.

Решение #2

Пренебрегвайте предупреждението и го отхвърляйте. Наистина е досадно и трудоемко да се прегледат и коригират всички файлове, свързани с WordPress разширения или теми. Всъщност подобна процедура на практика е и безсмислена, защото новата актуализация ще премине през вашите промени. Този подход се препоръчва за момента, когато разработчиците поправят кода си през следващите месеци.

Можете да използвате този код в първия включен файл. Той обикновено е конфигурационен файл. В случая на WordPress имате опция да го добавите към wp-config.php (веднага след отварянето на php tag: <? Php или файла functions.php.

Ако желаете да инсталирате приставка, разгледайте плъгина на  Orbisius Warning Suppressor.

// Call the function to install the warning suppressor
orbisius_p3778_warning_suppressor_supress_warnings();

/**
 * Installs an error handler that will be called only for php E_WARNING
 * @package Orbisius Warning Suppressor
 * @since 1.0
 */
function orbisius_p3778_warning_suppressor_supress_warnings() {
    // How to turn it off via wp-config.php
    if ( version_compare( phpversion(), 7, '>=' ) ) {
        // https://stackoverflow.com/questions/36079651/silence-declaration-should-be-compatible-warnings-in-php-7
        set_error_handler('orbisius_p3778_warning_suppressor_suppress_bad_warnings', E_WARNING);
    }
}

/**
 * Suppresses only the weird messages about the wrong/incorrect declaration.
 * @param int $err_no
 * @param str $err_str
 * @return bool
 */
function orbisius_p3778_warning_suppressor_suppress_bad_warnings($err_no, $err_str, $errfile = '', $errline = '') {
    // If the function returns FALSE then the normal error handler continues.
    $contains_stupid_warning = stripos($err_str, 'Declaration of') !== false;
    return $contains_stupid_warning;
}

Сходни търсения:

  • Как да премахнем PHP Warning: Declaration of … should be compatible with ….
  • Как да отстраня PHP Warning: Declaration of … should be compatible with ….
  • Как да стопираме PHP Warning: Declaration of … should be compatible with ….

 

Сподели статията

Leave a Reply

Your email address will not be published. Required fields are marked *