php “TTY模式要求/dev/tty为可读/可写,”

oewdyzsn  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(129)

当我在Laravel v9.0中运行这段代码时,

$process = new Process(['sudo','docker','login','-u',$this->git_username,'-p',$this->git_token,$this->docker_image_url]);
$process->setTty(true);
$process->run();`

我一直得到这个错误"TTY mode requires /dev/tty to be read/writable."
在参考laravel文档时,我注意到这个过程在版本10中可用。但是如果我删除$process->setTty(true);,它运行得很好。但我需要运行sudo,因为需要root权限。
请帮帮我,先谢了。
当我在进程中没有sudo$process->setTty(true);的情况下运行时,结果如下

WARNING! Using --password via the CLI is insecure. Use --password-stdin. permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth": dial unix /var/run/docker.sock: connect: permission denied

如果进程中没有$process->setTty(true);,则结果如下

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required
jqjz2hbq

jqjz2hbq1#

我也有同样的问题。我不认为tty模式可以编程实现。我使用shell_exec函数代替,它对我来说工作得很好。
比如说

$process = shell_exec ('sudo docker login -u '.$this->git_username.' -p '.$this->git_token.' '.$this->docker_image_url]);

相关问题