2

wp-cliツールは、コマンド ラインから WordPress タスクを実行するための非常に便利な方法です。ただし、WordPress サイトに PHP メソッドを呼び出すプラグインまたはテーマ初期化コードが含まれている場合、getallheaderswp-cli は機能しません。代わりに、すべてのコマンドに応答して次のエラーを返します。

致命的なエラー: 未定義関数 getallheaders() の呼び出し

これは PHP v 5.4.4 で発生しています。この問題の最善の回避策は何ですか?

4

1 に答える 1

4

一部の PHP 関数は、基礎となるサーバー アプリケーション プログラミング インターフェイスに依存しています。もちろん、Apache SAPI は getallheaders メソッドをサポートしています。ただし、一部のコマンド ライン インターフェースはそうではありません。この場合、wp-cli は PHP-FPM (FastCGI Process Manager) を SAPI として使用します。ただし、このPHP Bug Report 62596によると、PHP v5.4の PHP-FPM は getallheaders をサポートしていません。そのため、wp-cli が CLI モードで WordPress サイトをブートストラップしようとすると、未定義関数エラーが発生します。

推奨される解決策は、これらの行を wp-config.php ファイルに追加することです。wp-cli ツールは、WP_CLI という定数を定義します。この定数が設定されている場合は、getallheaders のダミー バージョンを定義するだけです。CLI モードで実行している場合、WP アプリは HTTP ヘッダーを取得しないため、問題は発生しません。wp-config.php に挿入できるサンプル コードを次に示します。

if ( defined( 'WP_CLI' ) ) {
    if ( !function_exists ( 'getallheaders' ) ) {
        function getallheaders() {return array();}
    }
}
于 2015-06-10T23:50:34.377 に答える