我正在尝试在我的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通过命令行运行?
答案 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
答案 4 :(得分:2)
对于Kohana 3,请查看这些docs and source。
答案 5 :(得分:1)
我有类似的问题
您或是否有人将SERVER_NAME
添加到index.php
文件中?
如果是,请删除index.php
(和/或引导程序)之外的代码,或者将其包装在
if (PHP_SAPI === 'cli')
{
// ...
} else {
//....
}