2

wp-cli工具是从命令行执行 WordPress 任务的一种非常方便的方法。但是,如果 WordPress 站点包含调用 PHPgetallheaders方法的插件或主题初始化代码,则 wp-cli 将不起作用。相反,它将返回以下错误以响应每个命令:

致命错误:调用未定义函数 getallheaders()

这发生在 PHP v 5.4.4 上。这个问题的最佳解决方法是什么?

4

1 回答 1

4

一些 PHP 函数依赖于底层的服务器应用程序编程接口。Apache SAPI 当然支持 getallheaders 方法。但有些命令行界面没有。在这种情况下,wp-cli 使用 PHP-FPM(FastCGI 进程管理器)作为 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 回答