Kohana - 命令行

时间:2010-01-25 15:47:00

标签: php kohana

我正在尝试在我的Web应用程序中“伪造”一个进程(通过SMTP发送电子邮件),该应用程序是基于Kohana构建的。

    $command = 'test/email';
    exec('php index.php '.$command.' > /dev/null/ &', $errors, $response);

我收到了错误 -

Notice: Undefined index: SERVER_NAME

当我查看Kohana的index.php文件时,我发现它正在寻找一个名为SERVER_NAME的变量,但我猜它会出现NULL,因为Kohana无法检测到这个值并在运行之前设置它。

如何让Kohana通过命令行运行?

6 个答案:

答案 0 :(得分:17)

在查看Kohana3源代码后,我发现它支持cli(system/classes/kohana/cli.php)。你可以传递3个选项(uri,方法,获取,发布)。所以: -

$ php index.php --uri="items/list"

会调用list中的Controller_Items方法。

答案 1 :(得分:10)

据我所知,由于其引导方法,您无法直接在命令行中运行kohana文件。

你可以做两件事: 导出所有命令,如kohana之外的函数,并独立运行。

您可以做的其他事情是通过位于kohana主文件夹中的index.php运行它,同时将$ controller,$方法变量传递给它,使其最终位于代码所在的正确对象:

对于kohana 2:

php index.php controller/method/var1/var2

Kohana 3

php index.php --uri=controller/method/var1/var2

修改 Kohana从版本3.3开始有一个很棒的CLI任务运行器作为官方模块。对于3.2版本,它仍然是一个非官方的模块。我建议你使用这些,因为它们在从CLI运行时提供了很多额外的选项:

答案 2 :(得分:7)

而Kohana2只是php index.php controller/method/param1/param2/etc

Kohana是为了在CLI和网络上运行而构建的。

答案 3 :(得分:5)

如果您正在使用Kohana 3,那么您可以从终端运行它。

实施例

php index.php --uri=controller/action

选项

  • - URI
  • - 方法
  • - 获得
  • - 交

答案 4 :(得分:2)

对于Kohana 3,请查看这些docs and source

答案 5 :(得分:1)

我有类似的问题

您或是否有人将SERVER_NAME添加到index.php文件中?

如果是,请删除index.php(和/或引导程序)之外的代码,或者将其包装在

if (PHP_SAPI === 'cli') 
{ 
   // ... 
}  else {
 //....
}