PHP命令行:如何读取键入的密码而不在控制台上显示键入的字符?

PHP命令行:如何读取键入的密码而不在控制台上显示键入的字符?,php,command-line,passwords,Php,Command Line,Passwords,我想作为命令行脚本的一部分读入密码,但不想在屏幕上显示键入的密码。这似乎是命令行应用程序中一个相当常见的功能,但我的Google fu未能确定这是如何工作的。这是操作系统的一项功能吗?您是否必须以某种方式截取输入流,使其不会写入控制台?我想在php命令行脚本中使用它,但我不能使用我不能理解的东西 一些独立的搜索产生了链接,在底部他们提到mysqladmin不使用STDIN读取密码。那么他们是如何做到的,我又该如何实现这一功能呢?如果有人在谷歌上发现了这一点,我会回答 这在纯PHP中是不可能的。解

我想作为命令行脚本的一部分读入密码,但不想在屏幕上显示键入的密码。这似乎是命令行应用程序中一个相当常见的功能,但我的Google fu未能确定这是如何工作的。这是操作系统的一项功能吗?您是否必须以某种方式截取输入流,使其不会写入控制台?我想在php命令行脚本中使用它,但我不能使用我不能理解的东西


一些独立的搜索产生了链接,在底部他们提到mysqladmin不使用STDIN读取密码。那么他们是如何做到的,我又该如何实现这一功能呢?

如果有人在谷歌上发现了这一点,我会回答

这在纯PHP中是不可能的。解决方案是为Linux执行一个小型shell脚本,或为Windows执行一个小型程序

对于zsh shell,shell脚本如下所示:

/usr/bin/env zsh -c 'stty -echo; read -r mypassword; stty echo; echo $mypassword'
Seldaek从Composer编写了一个完整的工作实现,您可以在

上找到它。要回答有关mysqladmin的问题,您可以随时打开自己的TTY,它将允许输入。