首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用需要交互的终端运行php代码

使用需要交互的终端运行php代码
EN

Stack Overflow用户
提问于 2020-06-29 10:25:08
回答 1查看 37关注 0票数 0

我有一个部署在Linux机器上的监控应用程序(nagiosxi),一些最终设置是通过web浏览器执行的。例如,如果应用程序部署在192.168.2.10上,如果我将浏览器指向http://192.168.2.10,它会自动重定向到http://192.168.2.10/nagiosxi/install.php。有一些基本设置,比如验证URL并单击下一步,然后设置密码,最后单击完成设置。

现在,我试着看看是否可以使用php CLI做同样的事情。

所以,在我试过的一个终端里,

代码语言:javascript
复制
php -f /usr/local/nagiosxi/html/install.php

但是这给出了一个很大的stdout,并且我不能交互地设置任何东西。

有没有办法做到这一点?请注意,我没有PHP背景。

EN

回答 1

Stack Overflow用户

发布于 2020-06-29 10:35:21

PHP手册可能会帮助您解决问题。

我希望下面的参考代码和源代码链接能对你有所帮助。

来源:https://www.php.net/manual/en/function.fopen.php

我正在为win32编写一个控制台脚本,并注意到其中的一些事情。在win32上,您似乎不能重新打开输入流进行读取,而是必须打开它一次,然后从那里读取。另外,我不知道这是个bug还是什么,但是看起来fgets()会一直读到新行。返回的字符数是可以的,但它不会停止读取并返回到脚本。我现在还不知道有什么办法可以解决这个问题,但我会继续努力。

这是一些代码,可以解决关闭和重新打开stdin的问题。

代码语言:javascript
复制
<?php
function read($length='255'){
    if (!isset($GLOBALS['StdinPointer'])){
        $GLOBALS['StdinPointer']=fopen("php://stdin","r");
    }
    $line=fgets($GLOBALS['StdinPointer'],$length);
    return trim($line);
}
echo "Enter your name: ";
$name=read();
echo "Enter your age: ";
$age=read();
echo "Hi $name, Isn't it Great to be $age years old?";
@fclose($StdinPointer);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62630326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档