Отключите устаревшие ошибки в 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 04

@molokoloco ты дважды ошибся. Сначала ты ничего не исправил. Вы просто заставили его замолчать. 2-й, вы все еще используете mysqlустаревший. Вы должны хотя бы переключиться наmysqli
Марчин Орловски

Не работает. Он где-то перезаписан? Куда вы это положили?
Alex


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. Он предназначен для редактирования с настройками конфигурации.
Nilpo

4

Я предпочитаю использовать этот метод

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

Таким образом я не отключаю случайно то, что мне нужно


1
Это дает вам меньше контроля. Вы предполагаете, что все, что в настоящее время настроено, правильно. Лучше установить его напрямую по мере необходимости, чтобы не получить перекрывающиеся конфигурации.
Nilpo

Понять. Каждый случай индивидуален.
realtebo

1
Тем не менее, это лучший ответ. Это единственный прямой ответ на вопрос: отключить только E_DEPRECATED, без каких-либо побочных эффектов.
Sygmoral

-2

эта ошибка возникает, когда вы меняете версию php: очень просто подавить это сообщение об ошибке

Чтобы подавить сообщение об ошибке УСТАРЕВШЕЕ, просто добавьте приведенный ниже код в свой файл index.php:

init_set ( 'display_errors', False);


не делайте этого, это скрывает все сообщения об ошибках, а не только об амортизации.
tanaydin 02
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.