Вимкніть застарілі помилки в PHP 5.3


127

На моєму сервері працює PHP 5.3, і моя програма WordPress виплюває ці помилки на мене, внаслідок чого мій session_start () зламається

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 647

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 662

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 669

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 676

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 712

Це дратує, але я не хочу вимикати повідомлення про помилки на екрані. Як відключити ці набридливі застарілі попередження?

У мене працює WordPress 2.9.2.


Чи не 3.3.1 є поточною оновленою версією WordPress?
— Шадур

йому, здається, подобається старий php зі старим wordpress
— Qchmqs

Відповіді:


203

Це можна зробити в коді, зателефонувавши за наступними функціями.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

або

error_reporting(E_ALL ^ E_DEPRECATED);

Дякую, Робус, чи вб'є це будь-яке повідомлення про помилки в PHP?
— atwellpub

6
Ні, перший, в основному, повідомляє php показувати помилки ERROR / WARNING / PARSE / NOTICE, а другий повідомляє php показувати всі помилки, які ПІДТВЕРЖДЕНО.
— Робус

1
Використання PHP 5.5.9 в Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" Не мають ефекту .... але, на моєму прикладі, "@mysql_connect ();" виконайте трюк :-(
— molokoloco

@molokoloco ти зробив неправильно двічі. Спочатку ви нічого не виправили. Ви просто замовкли. По-друге, ви все ще використовуєте, mysqlщо застаріло Потрібно принаймні перейти наmysqli
— Marcin Orlowski

Не працює. Це десь переписано? Куди ти це поклав?
— Олексій


21

Щоб отримати лише ті помилки, через які програма припиняє роботу, використовуйте:

error_reporting(E_ALL ^ (E_NOTICE | E_WARNING | E_DEPRECATED));

Це перестане показувати сповіщення, попередження та застарілі помилки.


13

Усі попередні відповіді правильні. Оскільки ніхто не натякав, як вимкнути всі помилки в PHP, я хотів би згадати це тут:

error_reporting(0); // Turn off warning, deprecated,
                    // notice everything except error

Хтось може вважати його корисним ...


11

Я щойно зіткнувся з подібною проблемою, коли плагін SEO видав велику кількість попереджень, завдяки чому використання мого диску на блозі перевищує ліміт плану.

Я дізнався, що ви повинні включати команду error_reporting після того, як wp-settings.php потрібно у файл wp-config.php:

   require_once( ABSPATH .'wp-settings.php' );
   error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );

роблячи це, більше жодних попереджень, повідомлень та застарілих рядків не додається до вашого файлу журналу помилок!

Тестовано на WordPress 3.8, але я думаю, він працює для кожної установки.


9

У файлі wp-config.php можна знайти постійний WP_DEBUG. Переконайтеся, що для нього встановлено значення false.

define('WP_DEBUG', false);

Це для WordPress 3.x.


7

Ви повинні відредагувати файл конфігурації PHP. Знайдіть рядок

error_reporting = E_ALL

і замініть його на:

error_reporting = E_ALL ^ E_DEPRECATED

Якщо у вас немає доступу до файлу конфігурації, ви можете додати цей рядок до файлу PHP WordPress (можливо, headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);

Набагато краще до цього додати wp-config.php. Він призначений для редагування з налаштуваннями конфігурації.
— Нільпо

4

Я схильний використовувати цей метод

$errorlevel=error_reporting();
$errorlevel=error_reporting($errorlevel & ~E_DEPRECATED);

Таким чином я не відключаю випадково щось, що мені потрібно


1
Це дає менший контроль. Ви припускаєте, що все, що зараз налаштовано, є правильним. Краще встановити його безпосередньо за необхідності, щоб у вас не було конфігурацій, що перекриваються.
— Нільпо

Зрозумійте. Кожен випадок різний.
— realtebo

1
Це все-таки найкраща відповідь. Це єдиний, який безпосередньо відповідає на питання: вимкніть лише E_DEPRECATED, без побічних ефектів.
— Сигморальний

-2

ця помилка виникає при зміні версії php: придушити це повідомлення про помилку дуже просто

Щоб придушити ПІДВИЩЕНО повідомлення про помилку, просто додайте нижче код у свій файл index.php:

init_set ('display_errors', False);


не робіть цього, що приховує всі повідомлення про помилки, не тільки для амортизації.
— танайдин
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.