PHP proc_open-如果流程需要输入,则退出

PHP proc_open-如果流程需要输入,则退出,php,proc-open,Php,Proc Open,所以-我使用proc_open()来执行程序,如ssh、rsync、scp等来执行备份任务 但是,在某些情况下,这些过程可能会变成交互式的,并且需要输入,例如,当SSH的公钥身份验证失败时,它会要求输入密码。这是一个主要问题,因为不可能让备份作业挂起,更糟糕的是,不生成错误 如何在我运行的进程中完全消除交互性?如果流程突然需要输入,我希望立即退出并生成错误。 通用超时不是解决方案,因为备份过程在正常操作中可能需要很长时间。 我真的需要一个通用的解决方案来解决这个问题 谢谢 只需将空文件作为std

所以-我使用
proc_open()
来执行程序,如
ssh
rsync
scp
等来执行备份任务

但是,在某些情况下,这些过程可能会变成交互式的,并且需要输入,例如,当SSH的公钥身份验证失败时,它会要求输入密码。这是一个主要问题,因为不可能让备份作业挂起,更糟糕的是,不生成错误

如何在我运行的进程中完全消除交互性?如果流程突然需要输入,我希望立即退出并生成错误。 通用超时不是解决方案,因为备份过程在正常操作中可能需要很长时间。 我真的需要一个通用的解决方案来解决这个问题


谢谢

只需将空文件作为stdin传递:

 $r = proc_open('cat', [fopen('/dev/null', 'rb')], $p);
 proc_close($r)
此脚本在几毫秒后结束。

是否可以创建一个将自身伪装为零长度流并在请求读取时另外让您知道的脚本?不幸的是,PHP的流情况充斥着特殊情况和不一致性,因此这可能会变得更加困难,听起来(甚至是不可能的)。