下面的代码几乎可以工作,但这不是我的意思:
ob_start();
echo 'xxx';
$contents = ob_get_contents();
ob_end_clean();
file_put_contents($file,$contents);
Run Code Online (Sandbox Code Playgroud)
有更自然的方式吗?
不幸的是,我发现所有用于执行外部程序的解决方案都不适合,因此我使用了自己的实现,即pcntl_execafter pcntl_fork。
但是现在我需要将已执行程序的stderr / stdout重定向到某个文件中。显然,我应该在之后使用某种dup2Linux调用pcntl_fork,但是dup2我在PHP中只能看到eio_dup2,它看起来像不是在运行常规流(例如stderr / stdout),而是在运行一些异步流。
如何dup2从PHP 调用或如何在没有它的情况下重定向std *?
相同的问题(尽管没有详细信息)没有答案:如何从PHP调用dup2()syscall?