WordPress wp-cli generiert Fehler: „Aufruf an undefinierte Funktion getallheaders“
Lesezeit: 2 Minuten
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?
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: