wp-cli工具是从命令行执行 WordPress 任务的一种非常方便的方法。但是,如果 WordPress 站点包含调用 PHP getallheaders
方法的插件或主题初始化代码,则 wp-cli 将不起作用。相反,它将返回以下错误以响应每个命令:
Fatal error: Call to undefined function getallheaders()
这发生在 PHP v 5.4.4 上。此问题的最佳解决方法是什么?
最佳答案
一些 PHP 函数依赖于底层的服务器应用程序编程接口(interface)。 Apache SAPI 当然支持 getallheaders 方法。但是一些命令行界面没有。在这种情况下,wp-cli 使用 PHP-FPM(FastCGI 进程管理器)作为 SAPI。然而根据这个PHP Bug Report 62596 , PHP-FPM 在 PHP v5.4 中不支持 getallheaders。因此,当 wp-cli 尝试以 CLI 模式引导 WordPress 站点时,会出现未定义的函数错误。
推荐的解决方案是将这些行添加到 wp-config.php 文件中。 wp-cli 工具定义了一个名为:WP_CLI 的常量。如果设置了此常量,则只需定义 getallheaders 的虚拟版本。这应该不会导致问题,因为 WP App 在 CLI 模式下运行时无论如何都不会获取任何 HTTP header 。这是一些可以插入到 wp-config.php 中的示例代码
if ( defined( 'WP_CLI' ) ) {
if ( !function_exists ( 'getallheaders' ) ) {
function getallheaders() {return array();}
}
}
关于php - WordPress wp-cli 生成错误 : "Call to undefined function getallheaders",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30769256/