Кохана - Командная строка - PullRequest
11 голосов
/ 25 января 2010

Я пытаюсь «подставить» процесс (электронное письмо, отправленное через SMTP) в моем веб-приложении, и приложение построено на Kohana.

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

Я получаю сообщение об ошибке -

Notice: Undefined index: SERVER_NAME

Когда я просматриваю файл index.php Коханы, я вижу, что он ищет переменную с именем SERVER_NAME, но я предполагаю, что он подходит к NULL, потому что Кохана не смог обнаружить это значение и установить его до запуска.

Есть идеи, как заставить Kohana работать через командную строку?

Ответы [ 6 ]

17 голосов
/ 10 марта 2010

Изучив исходный код Kohana3, я обнаружил, что в нем есть поддержка cli (system/classes/kohana/cli.php). Вы можете передать 3 варианта (URI, метод, получить, пост). Итак: -

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

вызовет метод list в Controller_Items.

10 голосов
/ 25 января 2010

Насколько я знаю, вы не можете запускать файлы kohana непосредственно в командной строке из-за его методов начальной загрузки.

Вы можете сделать 2 вещи: экспортировать все командные функции за пределами kohana и запускать их независимо.

Что-то еще, что вы можете сделать, это запустить его через index.php, расположенный в главной папке kohana, передавая переменные $ controller, $ method, чтобы он оказался в нужном объекте, где расположен ваш код:

Для кохана 2:

php index.php controller/method/var1/var2

Кохана 3

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

Изменить: У Kohana есть отличный CLI Runner с версии 3.3 и далее в качестве официального модуля. Для версии 3.2 это все еще неофициальный модуль. Я предлагаю вам использовать их, потому что они дают много дополнительных опций при запуске из CLI:

7 голосов
/ 09 февраля 2010

А у Кохана2 просто php index.php controller/method/param1/param2/etc

Kohana была создана для работы как в CLI, так и в Интернете.

5 голосов
/ 26 января 2010

Если вы используете Kohana 3, вы можете запустить его из терминала.

Пример

php index.php --uri=controller/action

Опции

  • - * 1009 URI *
  • - способ
  • - получить
  • - почта
2 голосов
/ 12 апреля 2010

Для Kohana 3 посмотрите эти документы и источник .

1 голос
/ 13 марта 2012

У меня была похожая проблема

Вы или кто-нибудь добавили SERVER_NAME в файл index.php?

Если это так, либо удалите код за пределами index.php (и / или загрузите) ИЛИ вы можете обернуть его в

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