Deaktivieren Sie veraltete Fehler in PHP 5.3


127

Auf meinem Server wird PHP 5.3 ausgeführt und meine WordPress-Installation spuckt diese Fehler auf mich aus, wodurch mein session_start () unterbrochen wird.

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

Das ist ärgerlich, aber ich möchte die Fehlerberichterstattung auf dem Bildschirm nicht deaktivieren. Wie deaktiviere ich diese lästigen veralteten Warnungen?

Ich verwende WordPress 2.9.2.


Ist 3.3.1 nicht die aktuelle Version von WordPress?
Shadur

er scheint ein altes PHP mit altem WordPress zu
mögen

Antworten:


203

Sie können dies im Code tun, indem Sie die folgenden Funktionen aufrufen.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

oder

error_reporting(E_ALL ^ E_DEPRECATED);

Vielen Dank, Robus. Wird dies auch die Meldung von PHP-Fehlern beenden?
Atwellpub

6
Nein, der erste weist PHP grundsätzlich an, ERROR / WARNING / PARSE / NOTICE-Fehler anzuzeigen, der zweite weist PHP an, alle Fehler außer DEPRECATED anzuzeigen.
Robus

1
Verwenden von PHP 5.5.9 unter Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" Keine Auswirkung ... aber in meinem Beispiel "@mysql_connect ();" Mach den Trick :-(
Molokoloco

@molokoloco du hast es zweimal falsch gemacht. Zuerst hast du nichts repariert. Du hast es gerade zum Schweigen gebracht. 2. Sie verwenden immer noch, mysqlwas veraltet ist. Sie sollten mindestens zumysqli
Marcin Orlowski

Funktioniert nicht Wird es irgendwo überschrieben? Wo legst du das hin?
Alex

22

Ich musste das anpassen

error_reporting = E_ALL & ~E_DEPRECATED

21

Verwenden Sie Folgendes, um nur die Fehler zu erhalten, die dazu führen, dass die Anwendung nicht mehr funktioniert.

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

Dadurch werden keine Hinweise, Warnungen und veralteten Fehler mehr angezeigt.


13

Alle vorherigen Antworten sind korrekt. Da niemand angedeutet hat, wie alle Fehler in PHP deaktiviert werden können, möchte ich es hier erwähnen:

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

Jemand könnte es nützlich finden ...


11

Ich hatte gerade ein ähnliches Problem, bei dem ein SEO-Plugin eine große Anzahl von Warnungen ausgab, die dazu führten, dass die Verwendung meiner Blog-Festplatte das Planlimit überschritt.

Ich fand heraus , dass Sie müssen den error_reporting Befehl umfassen , nachdem der wp-settings.php in der Datei wp-config.php erfordern:

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

Auf diese Weise werden keine Warnungen, Hinweise oder veralteten Zeilen mehr an Ihre Fehlerprotokolldatei angehängt!

Getestet auf WordPress 3.8, aber ich denke, es funktioniert für jede Installation.


9

In der Datei wp-config.php finden Sie die Konstante WP_DEBUG. Stellen Sie sicher, dass false festgelegt ist.

define('WP_DEBUG', false);

Dies ist für WordPress 3.x.


7

Sie müssen die PHP-Konfigurationsdatei bearbeiten. Finde die Linie

error_reporting = E_ALL

und ersetzen Sie es durch:

error_reporting = E_ALL ^ E_DEPRECATED

Wenn Sie keinen Zugriff auf die Konfigurationsdatei haben, können Sie diese Zeile zur PHP-WordPress-Datei hinzufügen (möglicherweise headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);

Es ist viel besser, dies hinzuzufügen wp-config.php. Es soll mit Konfigurationseinstellungen bearbeitet werden.
Nilpo

4

Ich neige dazu, diese Methode zu verwenden

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

Auf diese Weise schalte ich nicht versehentlich etwas aus, was ich brauche


1
Das gibt Ihnen weniger Kontrolle. Sie gehen davon aus, dass alles, was aktuell konfiguriert ist, korrekt ist. Stellen Sie es besser direkt nach Bedarf ein, damit Sie keine überlappenden Konfigurationen erhalten.
Nilpo

Verstehen. Jeder Fall ist anders.
Realtebo

1
Dies ist dennoch die beste Antwort. Es ist das einzige, das die Frage direkt beantwortet: Deaktivieren Sie nur E_DEPRECATED ohne Nebenwirkungen.
Sygmoral

-2

Dieser Fehler tritt auf, wenn Sie Ihre PHP-Version ändern: Es ist sehr einfach, diese Fehlermeldung zu unterdrücken

Um die DEPRECATED-Fehlermeldung zu unterdrücken, fügen Sie einfach den folgenden Code in Ihre index.php-Datei ein:

init_set ('display_errors', False);


Tun Sie das nicht, das verbirgt alle Fehlermeldungen, nicht nur für Abschreibungen.
Tanaydin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.