2010-06-12 171 views
0

我有一个PHP脚本foo.php重定向PHP-shell脚本输出

#!/usr/bin/php -c /etc/php5/cli/php.ini -q 
<?php 
    echo 'hello'; // & do some stuff 
?> 

我把这个脚本由SH-脚本进行包装,而直接在cron作业使用。 要摆脱它的输出我通常会只是创建一个SH-文件,该文件要求

/usr/bin/php -c /etc/php5/cli/php.ini -q foo.php > /dev/null 2 > /dev/null 

现在,我想做到这一点在PHP文件时,它自身的解释声明... 所以我我寻找的语法:

#!/usr/bin/php -args [file's content] > /redirect 2 > /redirect 

我有一种很难googleing它...因此,如果任何人都可以点我到正确的方向,我会很感激!

提前THX

Corelgott

+3

我认为你可以直接在cron job commmand(/path/to/script.php>/dev/null)中将输出重定向到/ dev/null,而不需要sh包装器。 – 2010-06-12 15:15:16

+0

啊我明白了,那是我还没有考虑过的解决方案。感谢您指出!这将解决问题。但我想知道我的建议语法是否存在... – Corelgott 2010-06-12 15:22:59

+1

您需要删除“2”和“>”之间的空格,或者如果将stdout和stderr重定向到相同的地方:'foo>/dev/null 2>&1' – 2010-06-12 18:00:38

回答

0

的家当声明绝不是用来控制脚本的输出,它更是一个利用这个程序来执行什么是下在这里的交易类型,因此有没有选择你想要的东西。

除非解释器本身有一个输出参数(php cli没有),否则您需要将> /dev/null语句保留在crontab行中。

您也可以修改您的脚本,使其具有全局布尔值$output,将所有print语句包含在if语句中,并将其包含在文件的顶部。

0

一样,@Victor Stanciu说,你重定向直接在cron作业命令的输出,但我能想到的唯一的另一种方法是:

php -r "ob_start(); include 'my_script'; ob_end_clean();" 

我想你可以关闭与fclose(STDOUT)标准输出,但显然常数STDIN,STDOUTSTDERR不再存在。