> и >> операторы не имеют никакого эффекта - PullRequest
0 голосов
/ 30 апреля 2011

при попытке записать вывод php-скрипта в файл я получаю самую странную ошибку.Я использую:

#php daily.php > error/daily

Что ж, все равно это выводить его в консоль.Файл (error / daily) не тронут.

error / daily имеет chmod 777. Различные конструкции, такие как

#php daily.php >> error/daily

, также не работают.Выходные данные daily.php просто продолжают выводиться в консоли ...

Есть идеи по этому поводу?: / Заранее спасибо!

ОБНОВЛЕНИЕ:

Теперь, используя

#php daily.php 2> error/daily

, в консоли ничего не выводится.

Но ошибка / daily не тронута, в него ничего не записано.

Другое ОБНОВЛЕНИЕ:

#php daily.php 2>> error/daily

работает как положено (добавляет вывод ошибок в файл), в то время как

#php daily.php 2> error/daily

просто очищает файли ничего не пишет в него.Есть идеи, почему это может происходить?

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

В терминале программы имеют два выхода: стандартный вывод и вывод ошибок. По умолчанию оба отображаются в консоли.

Оператор> (и >>) перенаправляет стандартный вывод в файл, но оставляет вывод ошибки в консоли.

Поскольку кажется, что вы пытаетесь перенаправить ошибки в файл, php должен записывать в вывод ошибок. Чтобы выполнить то, что вы хотите сделать, вы должны сделать

php daily.php 2> error/daily

Если вы хотите перенаправить оба выхода, вы также можете сделать

php daily.php 2> error/daily 1>&2

Редактировать : Не делай этого. Если вы хотите перенаправить оба выхода, перенаправьте в разные файлы. Например:

php daily.php 2> error/daily 1> output.txt
1 голос
/ 30 апреля 2011

Так это в командной строке?Эти круглые скобки приводят к выполнению вложенной команды при новом вызове оболочки;перенаправления будут применяться к выводу самой оболочки, которой нет.Команды, которые выполняет оболочка, по-прежнему выводят свои выходные данные на консоль.Просто отбросьте скобки;они не нужны и являются источником вашей проблемы.

...