Кохана - Командная строка
Я пытаюсь выполнить "faux-fork" процесс (электронное письмо, отправляемое через SMTP) в моем веб-приложении, и приложение построено на Kohana.
$command = 'test/email';
exec('php index.php '.$command.' > /dev/null/ &', $errors, $response);
Я получаю сообщение об ошибке -
Notice: Undefined index: SERVER_NAME
Когда я просматриваю файл index.php Kohana, я вижу, что он ищет переменную с именем SERVER_NAME, но я думаю, что она приближается к NULL, потому что Kohana не смог обнаружить это значение и установить его перед запуском.
Любые идеи о том, как заставить Кохану работать через командную строку?
Ответы
Ответ 1
Насколько я знаю, вы не можете запускать файлы 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
Edit:
У Kohana есть отличный бегун для задач CLI от версии 3.3 и далее в качестве официального модуля. Для версии 3.2 он по-прежнему является неофициальным модулем. Я предлагаю вам использовать их, потому что они предоставляют множество дополнительных опций при запуске из CLI:
Ответ 2
Изучив исходный код Kohana3, я обнаружил, что он поддерживает cli (system/classes/kohana/cli.php
). Вы можете передать 3 варианта (uri, method, get, post). Итак: -
$ php index.php --uri="items/list"
будет вызывать метод list
в Controller_Items
.
Ответ 3
И Kohana2 просто php index.php controller/method/param1/param2/etc
Kohana был построен для работы на CLI, а также в сети.
Ответ 4
Если вы используете Kohana 3, вы можете запустить его с терминала.
Пример
php index.php --uri=controller/action
Функции
- - URI
- - метод
- - получить
- - сообщение
Ответ 5
Для Kohana 3 ознакомьтесь с этими документами и источником.
Ответ 6
У меня была аналогичная проблема
Вы или кто-то добавил SERVER_NAME
в файл index.php
?
Если это так, либо удалите код вне index.php
(и или загрузочный), либо вы можете его обернуть в
if (PHP_SAPI === 'cli')
{
// ...
} else {
//....
}