175

My server is running PHP 5.3 and my WordPress install is spitting these errors out on me, causing my session_start() to break.

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

This is annoying, but I do not want to turn off on screen error reporting. How do I disable these bothersome deprecated warnings?

I am running WordPress 2.9.2.

2
  • Isn't 3.3.1 the current up to date version of wordpress? Commented Mar 12, 2012 at 10:04
  • he seems to like an old php with old wordpress Commented Jun 7, 2012 at 1:02

10 Answers 10

275

You can do it in code by calling the following functions.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

or

error_reporting(E_ALL ^ E_DEPRECATED);
Sign up to request clarification or add additional context in comments.

8 Comments

Thank you Robus, Will this kill any php error reporting as well?
Nope, the first one basically tells php to show ERROR/WARNING/PARSE/NOTICE errors, the second one tells php to show all but DEPRECATED errors.
Using PHP 5.5.9 on Ubuntu "error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT" Have no effect.... but, in my example, "@mysql_connect();" do the trick :-(
@molokoloco you did it wrong twice. First you did not fix a thing. You just silenced it. 2nd, you still using mysql which is deprecated. You should at least switch to mysqli
Doesn't work. Is it overwritten somewhere? Where do you put this?
|
38

To only get those errors that cause the application to stop working, use:

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

This will stop showing notices, warnings, and deprecated errors.

Comments

26

I needed to adapt this to

error_reporting = E_ALL & ~E_DEPRECATED

Comments

19

You have to edit the PHP configuration file. Find the line

error_reporting = E_ALL

and replace it with:

error_reporting = E_ALL ^ E_DEPRECATED

If you don't have access to the configuration file you can add this line to the PHP WordPress file (maybe headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);

1 Comment

It's much better to add this to wp-config.php. It's intended to be edited with configuration settings.
15

I just faced a similar problem where a SEO plugin issued a big number of warnings making my blog disk use exceed the plan limit.

I found out that you must include the error_reporting command after the wp-settings.php require in the wp-config.php file:

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

by doing this no more warnings, notices nor deprecated lines are appended to your error log file!

Tested on WordPress 3.8 but I guess it works for every installation.

Comments

13

All the previous answers are correct. Since no one have hinted out how to turn off all errors in PHP, I would like to mention it here:

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

Somebody might find it useful...

Comments

12

In file wp-config.php you can find constant WP_DEBUG. Make sure it is set to false.

define('WP_DEBUG', false);

This is for WordPress 3.x.

Comments

10

I tend to use this method

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

In this way I do not turn off accidentally something I need

5 Comments

That gives you less control. You're assuming that whatever is currently configured is correct. Better to set it directly as needed so that you don't get overlapping configurations.
Understand. Every case is different.
This is nevertheless the best answer. It is the only one that directly answers the question: only disable E_DEPRECATED, without any side effects.
In fact it should be $errorlevel=error_reporting(); error_reporting($errorlevel & ~E_DEPRECATED); but the idea is the best solution.
@cootje: you're right, the 2nd assignment isn't strictly needed; I've the habit to save in vars new config when changed (and I save old value in a $<configname>_old var of course to be able to restore in a 2nd moment if needed)
4

If PHP warnings are breaking things in WordPress, but you still want to know what the warnings are, you can disable displaying PHP errors/warnings and only send them to the log file:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );

Comments

-4

this error occur when you change your php version: it's very simple to suppress this error message

To suppress the DEPRECATED Error message, just add below code into your index.php file:

init_set('display_errors',False);

1 Comment

don't do that, that hides all error messages, not only for depreciations.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.