Вимкніть застарілі помилки в 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.