我有一个部署在Linux机器上的监控应用程序(nagiosxi),一些最终设置是通过web浏览器执行的。例如,如果应用程序部署在192.168.2.10上,如果我将浏览器指向http://192.168.2.10,它会自动重定向到http://192.168.2.10/nagiosxi/install.php。有一些基本设置,比如验证URL并单击下一步,然后设置密码,最后单击完成设置。
现在,我试着看看是否可以使用php CLI做同样的事情。
所以,在我试过的一个终端里,
php -f /usr/local/nagiosxi/html/install.php但是这给出了一个很大的stdout,并且我不能交互地设置任何东西。
有没有办法做到这一点?请注意,我没有PHP背景。
发布于 2020-06-29 10:35:21
PHP手册可能会帮助您解决问题。
我希望下面的参考代码和源代码链接能对你有所帮助。
来源:https://www.php.net/manual/en/function.fopen.php
我正在为win32编写一个控制台脚本,并注意到其中的一些事情。在win32上,您似乎不能重新打开输入流进行读取,而是必须打开它一次,然后从那里读取。另外,我不知道这是个bug还是什么,但是看起来fgets()会一直读到新行。返回的字符数是可以的,但它不会停止读取并返回到脚本。我现在还不知道有什么办法可以解决这个问题,但我会继续努力。
这是一些代码,可以解决关闭和重新打开stdin的问题。
<?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);https://stackoverflow.com/questions/62630326
复制相似问题