2

我有一个设置APP/Config/config.php我有一个定义主机的行:

define('SITE_URL','http://'.$_SERVER['HTTP_HOST']);

每当我运行蛋糕控制台时,我都会收到错误消息:

Notice (8): Undefined index: HTTP_HOST [APP/Config/config.php, line 144]
Code Context
include - APP/Config/config.php, line 144
PhpReader::read() - CORE/Cake/Configure/PhpReader.php, line 80
Configure::load() - CORE/Cake/Core/Configure.php, line 267
include - APP/Config/bootstrap.php, line 190
Configure::bootstrap() - CORE/Cake/Core/Configure.php, line 92
require - CORE/Cake/bootstrap.php, line 146
ShellDispatcher::_bootstrap() - CORE/Cake/Console/ShellDispatcher.php, line 131
ShellDispatcher::_initEnvironment() - CORE/Cake/Console/ShellDispatcher.php, line 101
ShellDispatcher::__construct() - CORE/Cake/Console/ShellDispatcher.php, line 57
ShellDispatcher::run() - CORE/Cake/Console/ShellDispatcher.php, line 68
[main] - APP/Console/cake.php, line 33

为什么会出现这种情况,我该如何解决这个问题?

4

2 回答 2

3

这是因为您是从控制台运行的,(cakePHP 使用 PHP-CLI)

$_SERVER['HTTP_HOST']

它仅在从浏览器(Web 服务器)运行时填充

于 2013-09-13T16:15:32.263 回答
2

@Braian 是对的。

您可以在配置文件中执行以下操作:

if(php_sapi_name() === 'cli') { 
    define('SITE_URL','http://{DEFAULT HOST HERE};
} else {
    define('SITE_URL','http://'.$_SERVER['HTTP_HOST']);
}

或者,您可以查询数据库以获取某种主机设置 - 如果您的主机因环境而异 - 并在运行控制台脚本主逻辑之前使用 Configure::write 设置您的配置值。

于 2013-09-13T16:37:07.763 回答