Kohana - 命令行

swt*_*t83 11 php kohana

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

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

我收到一个错误 -

Notice: Undefined index: SERVER_NAME

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

有任何想法如何让Kohana通过命令行运行?

k4m*_*4ml 17

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

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

将调用该list方法Controller_Items.


RJD*_*D22 10

据我所知,由于它的bootstrap方法,你不能直接在命令行中运行kohana文件.

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

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

对于kohana 2:

php index.php controller/method/var1/var2
Run Code Online (Sandbox Code Playgroud)

Kohana 3

php index.php --uri=controller/method/var1/var2
Run Code Online (Sandbox Code Playgroud)

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

  • 这不是真的,你可以*从命令行运行Kohana.这个答案可能不应该被接受. (3认同)
  • 这个答案既不真实又真实.我实际上解释说你不能直接运行kohana文件.但你可以通过index.php来运行它们,就像zombor下面所说的那样(开发人员).我同意我应该用不同的方式表达它.现在编辑^^ (2认同)

zom*_*bor 7

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

Kohana的构建是为了在CLI和Web上运行.


The*_*per 5

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

php index.php --uri=controller/action
Run Code Online (Sandbox Code Playgroud)

选项

  • --uri
  • - 方法
  • - 得到
  • --post