重定向PHP-shell脚本输出
问题描述:
我有一个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
答
的家当声明绝不是用来控制脚本的输出,它更是一个利用这个程序来执行什么是下在这里的交易类型,因此有没有选择你想要的东西。
除非解释器本身有一个输出参数(php cli没有),否则您需要将> /dev/null
语句保留在crontab行中。
您也可以修改您的脚本,使其具有全局布尔值$output
,将所有print
语句包含在if
语句中,并将其包含在文件的顶部。
答
一样,@Victor Stanciu说,你重定向直接在cron作业命令的输出,但我能想到的唯一的另一种方法是:
php -r "ob_start(); include 'my_script'; ob_end_clean();"
我想你可以关闭与fclose(STDOUT)
标准输出,但显然常数STDIN
,STDOUT
和STDERR
不再存在。
我认为你可以直接在cron job commmand(/path/to/script.php>/dev/null)中将输出重定向到/ dev/null,而不需要sh包装器。 – 2010-06-12 15:15:16
啊我明白了,那是我还没有考虑过的解决方案。感谢您指出!这将解决问题。但我想知道我的建议语法是否存在... – Corelgott 2010-06-12 15:22:59
您需要删除“2”和“>”之间的空格,或者如果将stdout和stderr重定向到相同的地方:'foo>/dev/null 2>&1' – 2010-06-12 18:00:38