我正在尝试在我的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通过命令行运行?
在查看Kohana3源代码后,我发现它支持cli(system/classes/kohana/cli.php
).你可以传递3个选项(uri,方法,获取,发布).所以:-
$ php index.php --uri="items/list"
将调用该list
方法Controller_Items
.
据我所知,由于它的bootstrap方法,你不能直接在命令行中运行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有一个很棒的CLI任务运行器从版本3.3开始作为官方模块.对于3.2版本,它仍然是一个非官方的模块.我建议你使用这些,因为它们在从CLI运行时提供了很多额外的选项:
Kohana 3.2 - https://github.com/Zeelot/kohana-minion
Kohana 3.3 - https://github.com/kohana/minion
而Kohana2就是 php index.php controller/method/param1/param2/etc
Kohana的构建是为了在CLI和Web上运行.
如果您使用Kohana 3,那么您可以从终端运行它.
php index.php --uri=controller/action
--uri
- 方法
- 得到
--post