WordPress wp-cli generiert Fehler: „Aufruf an undefinierte Funktion getallheaders“

Lesezeit: 2 Minuten

Benutzeravatar von jambroseclarke
jambroseclarke

Das wp-cli Tool ist eine sehr praktische Möglichkeit, WordPress-Aufgaben über die Befehlszeile auszuführen. Wenn die WordPress-Site jedoch Plugins oder Theme-Initialisierungscode enthält, der die PHP getallheaders Methode dann funktioniert wp-cli nicht. Stattdessen wird als Antwort auf jeden Befehl der folgende Fehler zurückgegeben:

Schwerwiegender Fehler: Aufruf der undefinierten Funktion getallheaders()

Dies geschieht auf PHP v 5.4.4. Was ist die beste Problemumgehung für dieses Problem?

Benutzeravatar von jambroseclarke
jambroseclarke

Einige PHP-Funktionen sind von der zugrunde liegenden Server Application Programming Interface abhängig. Der Apache SAPI unterstützt natürlich die Methode getallheaders. Einige Befehlszeilenschnittstellen tun dies jedoch nicht. In diesem Fall verwendet wp-cli den PHP-FPM (FastCGI Process Manager) als SAPI. Allerdings entsprechend PHP-Fehlerbericht 62596, PHP-FPM in PHP v5.4 unterstützt getallheaders nicht. Wenn wp-cli versucht, die WordPress-Site im CLI-Modus zu booten, treten daher die undefinierten Funktionsfehler auf.

Die empfohlene Lösung besteht darin, diese Zeilen zur Datei wp-config.php hinzuzufügen. Das Tool wp-cli definiert eine Konstante namens: WP_CLI. Wenn diese Konstante gesetzt ist, dann definieren Sie einfach eine Dummy-Version des getallheaders. Dies sollte kein Problem verursachen, da die WP-App sowieso keine HTTP-Header erhält, wenn sie im CLI-Modus ausgeführt wird. Hier ist ein Beispielcode, der in wp-config.php eingefügt werden kann

if ( defined( 'WP_CLI' ) ) {
    if ( !function_exists ( 'getallheaders' ) ) {
        function getallheaders() {return array();}
    }
}

  • Einzelne Vorkommen können auch inline behandelt werden, wenn die getallheaders-Funktion aufgerufen wird, indem sie mit umbrochen wird. if(function_exists('getallheaders'))

    – hier

    20. November 2015 um 18:51 Uhr

Falls Sie eine Synchronisierung von einer Website/Anwendung über API zu WordPress durchführen und tatsächlich die getallheaders-Funktion benötigen, um zu funktionieren, können Sie diese Lösung verwenden:

$headers = [];
if ( function_exists( 'getallheaders' ) ) {
    $headers = getallheaders();
} else {
    function getallheaders() {
        $headers = [];
        foreach ($_SERVER as $name => $value) {
            if (substr($name, 0, 5) == 'HTTP_') {
                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
            }
        }
        return $headers;
    }
    $headers = getallheaders();
}

1426800cookie-checkWordPress wp-cli generiert Fehler: „Aufruf an undefinierte Funktion getallheaders“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy