我在我手动运行的一个php脚本中有以下行:
exec("/usr/bin/php ".__DIR__."/driver.php > /dev/null &");
如何修改它以便输出也写入日志文件(除了在后台运行)。以下对我没有用处:
exec("/usr/bin/php ".__DIR__."/driver1.php /tmp/log.txt > /dev/null &");
答案 0 :(得分:3)
在bash / shell中,>
运算符告诉它在哪里写输出。在原始命令中,输出将发送到/dev/null
,这意味着它被丢弃。而是,更新命令以指向您的日志文件:
exec("/usr/bin/php ".__DIR__."/driver1.php > /tmp/log.txt &");
但是,如果你想将内容附加到该文件中(即每次运行该命令时都不要替换它),则需要使用>>
:
exec("/usr/bin/php ".__DIR__."/driver1.php >> /tmp/log.txt &");
答案 1 :(得分:0)
我会想exec("/usr/bin/php ".__DIR__."/driver.php >> /tmp/log.txt 2>&1");
。
>原始文件中的/ dev / null是发送输出的内容,而不是日志文件。它转到/ dev / null。
>> /tmp/log.txt应该将输出附加到log.txt。
2>& 1还应将错误输出重定向到此日志文件。