wp-cli工具是从命令行执行 WordPress 任务的一种非常方便的方法。但是,如果 WordPress 站点包含调用 PHPgetallheaders
方法的插件或主题初始化代码,则 wp-cli 将不起作用。相反,它将返回以下错误以响应每个命令:
致命错误:调用未定义函数 getallheaders()
这发生在 PHP v 5.4.4 上。这个问题的最佳解决方法是什么?
wp-cli工具是从命令行执行 WordPress 任务的一种非常方便的方法。但是,如果 WordPress 站点包含调用 PHPgetallheaders
方法的插件或主题初始化代码,则 wp-cli 将不起作用。相反,它将返回以下错误以响应每个命令:
致命错误:调用未定义函数 getallheaders()
这发生在 PHP v 5.4.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();}
}
}