加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 作曲家脚本中的用户输入

发布时间:2020-12-13 16:58:58 所属栏目:PHP教程 来源:网络整理
导读:在composer包中,我有post-install-cmd脚本,如下所示: #!/bin/bashecho 'Hello!'read -p 'Database password: ' DB_PASSphp setup/index.php database_password=$DB_PASSecho 'Complete!' 但是在composer安装后我遇到了这个错误: ...Generating autoload fi
在composer包中,我有post-install-cmd脚本,如下所示:

#!/bin/bash
echo 'Hello!'
read -p 'Database password: ' DB_PASS
php setup/index.php database_password=$DB_PASS
echo 'Complete!'

但是在composer安装后我遇到了这个错误:

...
Generating autoload files
> post-install-cmd: _scripts/ask_db_data.sh
Executing command (CWD): _scripts/ask_db_data.sh
Hello!
Script _scripts/ask_db_data.sh handling the post-install-cmd event returned with an error


[RuntimeException]                                                   
Error Output: Hello!  

Exception trace:
() at phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:196
 ComposerEventDispatcherEventDispatcher->doDispatch() at phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:94
 ComposerEventDispatcherEventDispatcher->dispatchScript() at phar:///usr/local/bin/composer/src/Composer/Installer.php:350
 ComposerInstaller->run() at phar:///usr/local/bin/composer/src/Composer/Command/InstallCommand.php:134
 ComposerCommandInstallCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:256
 SymfonyComponentConsoleCommandCommand->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:838
 SymfonyComponentConsoleApplication->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:189
 SymfonyComponentConsoleApplication->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:167
 ComposerConsoleApplication->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:120
 SymfonyComponentConsoleApplication->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:98
 ComposerConsoleApplication->run() at phar:///usr/local/bin/composer/bin/composer:43
 require() at /usr/local/bin/composer:25

我如何在作曲家脚本中询问用户输入?

解决方法

好的,您正在尝试执行bash / shell脚本来读取字符串并将其传递给您的php文件.我不确定,为什么这样做不成功.

另一种方法是留在post-install-cmd的PHP代码中.
这是一个事件,它可以访问Composer和IO.
要使用Console,您需要Composer中的$io对象.
您可以使用getIO()获取它.

然后,您可以使用方法ask()或askConfirmation()以交互方式询问用户“缺失”值.

非常简短:

$io = $this->getIO();
$pw = $io->ask('Enter your Password: ');

exec('php setup/index.php database_password=' . escapeshellarg($pw));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读