2013-04-03 2 views
0

Я пытаюсь просто написать «hello world» в файл из оболочки cakephp с планами в конечном итоге написать файл sitemap.xml с использованием наших моделей продуктов. Я нашел это: Question, который меня начал ...запись вывода в файл с оболочкой CakePHP

Но я думаю, что ConsoleOutput не поддерживается в Cake 1.3.6 (который я использую), или мне нужно включить класс, который его удерживает.

Я получаю ошибку при попытке запустить файл из терминала: PHP Фатальная ошибка: Class «ConsoleOutput» не найден в /public/vendors/shells/sitemap.php на линии 7

Вот мой код:

class SitemapShell extends Shell { 

public function __construct($stdout = null, $stderr = null, $stdin = null) { 
    // This will cause all Shell outputs, eg. from $this->out(), to be written to 
    // TMP.'shell.out' 
    $stdout = new ConsoleOutput('file://'.TMP.'shell.out'); 

    // You can do the same for stderr too if you wish 
    // $stderr = new ConsoleOutput('file://'.TMP.'shell.err'); 

    parent::__construct($stdout, $stderr, $stdin); 
} 

public function main() { 
    // The following output will not be printed on your console 
    // but be written to TMP.'shell.out' 
    $this->out('Hello world'); 
} 

} 
+2

Вы можете просто получить свой вывод в переменной и file_put_contents(). Было бы легче ИМО. – mark

+1

Оболочка в 1.3 РАДИКАЛЬНО отличается от оболочки в 2.x. Действительно, 'ConsoleOutput' недоступен в 1.3. Я бы пошел с предложением @ mark. – jeremyharris

+0

Итак, я предполагаю, что мне даже не нужен __construct. Я попробую это и отчитаю. благодаря –

ответ

1

Вы правы, что ConsoleOutput не используется в CakePHP 1.3 - можете ли вы перейти на версию 2. *?

Если вы не можете просто использовать обычный PHP:

$fp = fopen('hello.txt', 'w'); 
fwrite($fp, 'hello world'); 
fclose($fp); 

Надеется, что это помогает.

Toby

Смежные вопросы