Kohana — Command Line

假装没事ソ 提交于 2019-12-04 19:23:23

问题


I'm trying to "faux-fork" a process (an email being sent via SMTP) in my web application, and the application is built on Kohana.

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

I'm getting an error --

Notice: Undefined index: SERVER_NAME

When I look into Kohana's index.php file, I see that it is looking for a variable named SERVER_NAME, but I guess it is coming up NULL because Kohana couldn't detect this value and set it prior to run.

Any ideas how to get Kohana to run via command line?


回答1:


As far as I know you can't run the kohana files directly in command line because of its bootstrap methods.

You could do 2 things: export all command like functions outside kohana and run them independently.

Something else you could do is running it trough the index.php located in the kohana main folder while passing the $controller, $method variables to it so it ends up at the right object where your code is located:

For kohana 2:

php index.php controller/method/var1/var2

Kohana 3

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

Edit: Kohana has a great CLI task runner from version 3.3 onward as official module. For version 3.2 it's still an unofficial module. I suggest you use these because they give a lot of extra options on running from CLI:

  • Kohana 3.2 - https://github.com/Zeelot/kohana-minion
  • Kohana 3.3 - https://github.com/kohana/minion



回答2:


After looking into Kohana3 source code, I found that it has support for cli (system/classes/kohana/cli.php). You can pass 3 options (uri, method, get, post). So:-

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

would call the list method in Controller_Items.




回答3:


And Kohana2 is just php index.php controller/method/param1/param2/etc

Kohana was built to run on the CLI as well as web.




回答4:


If you are using Kohana 3 then you can run it from the terminal.

Example

php index.php --uri=controller/action

Options

  • --uri
  • --method
  • --get
  • --post



回答5:


For Kohana 3, check out these docs and source.




回答6:


I had a similar issue

Did you or anyone add the SERVER_NAME to the index.php file?

If so either remove the code outside the index.php (and or bootstrap) OR you can wrap it it in a

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


来源:https://stackoverflow.com/questions/2133433/kohana-command-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!