为什么在 exec php 中 运行 nohup 时更新 nohup.out

Why update nohup.out when running nohup in exec php

我正在 运行 连接一个 php 插座。我运行这个程序通过nohup。 运行 这个程序可以通过 root 正常运行。但我的问题是通过 php 中的 exec () 函数 运行 连接程序。当我 运行 这样的命令时,程序 运行 正确但程序输出未打印在 nohup.out.

我在 ssh 中的命令: nohup php my_path/example.php & #正在工作

我在用户 php 中的命令: exec('nohup php my_path/example.php >/dev/null 2>&1 &', $output); #不更新 nohup.out

请指导我...

来自 exec 上的 PHP 文档:

If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

来自man nohup

If standard input is a terminal, redirect it from /dev/null. If standard output is a terminal, append output to 'nohup.out' if possible, '$HOME/nohup.out' otherwise. If standard error is a terminal, redirect it to standard output. To save output to FILE, use 'nohup COMMAND > FILE'.

为了满足两者 - 手动重定向到 nohup.out:

exec('nohup php my_path/example.php >>nohup.out 2>&1 &', $output);