PHP等待来自命令行的输入[重复]
Posted
技术标签:
【中文标题】PHP等待来自命令行的输入[重复]【英文标题】:PHP wait for input from command line [duplicate] 【发布时间】:2013-02-25 16:08:20 【问题描述】:我希望能够让 php 程序等待用户输入。例如:
-
脚本向服务器请求授权码(此码将通过电子邮件发送)
脚本等待用户输入授权码
脚本继续
我应该如何执行第 2 步? (有可能吗?)
【问题讨论】:
如何阅读有关 php cli 使用的手册页,特别有用的是这条评论 -> php.net/manual/en/features.commandline.php#94924 谢谢@Crisp,你可以回答这个问题。 我不认为这是链接答案的副本。您可以使用 Crisp 提供的涉及文件句柄的代码。或者简单地使用 readline() 函数,它会提示用户输入:php.net/manual/en/function.readline.php 假设你的 PHP 是用 readline 支持编译的。 @Gabe 问题可能不一样,但是在另一个问题上给出了这个问题的答案,这使得结束公平。 你可以使用内置的php函数:"readline()",用法:$line = readline("Command:"); 【参考方案1】:cli 的 php 手册页有一个 comment here 详细说明了一个解决方案,(复制到这里供其他人查看)
<?php
echo "Are you sure you want to do this? Type 'yes' to continue: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes')
echo "ABORTING!\n";
exit;
fclose($handle);
echo "\n";
echo "Thank you, continuing...\n";
?>
【讨论】:
这可以做循环吗,在输入时终止? @azurinko 是 gist.github.com/jordan314/f633a58c68a7d923139b891065365133 也可以只使用$line = trim(fgets($handle))
,因为在 99.9% 的情况下,您都不希望在捕获的输入中出现换行符
您可以使用附加检查 if( php_sapi_name() === 'cli' )
来确定当前调用是否来自 CLI ***.com/questions/933367/…
@Hugo:您应该为此使用readline()
。这是不必要的复杂。以上是关于PHP等待来自命令行的输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章