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等待来自命令行的输入[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux复制命令行的快捷键

来自命令行的 ms 语音

来自命令行的 xfail pytest 测试

无法识别来自命令行的 cppcheck

来自命令行的 xcodebuild:文件的编译标志

来自命令行的颠覆(svn):任何一个“反映所有更改”的命令?