从 SSH 运行 PHP 脚本时,如何向用户隐藏 shell_exec() 输出?

从 SSH 运行 PHP 脚本时,如何向用户隐藏 shell_exec() 输出?

我有一个 PHP 脚本,可以自动下载 Nginx 并设置我的 Web 服务器。它可以执行以下操作:创建 Nginx 配置文件、生成 SSL 证书,以及其他令人惊叹的功能。它通过 SSH、php file.php 命令运行。

不幸的是,由于一些原因,我不会在这里发布它,但我会展示我遇到的问题的例子。

例如,我通过命令行界面运行脚本几秒钟后,得到以下输出:

rm: cannot remove...(不存在的文件)

或者我有这个代码:

if(!preg_match("/nginx/", shell_exec("nginx -v"))) {

并输出 Nginx 版本并显示命令的输出apt-getshell_exec())。

我怎样才能解决这个问题?

答案1

PHP 的文档页面shell_exec()有评论解决了您的问题。基本上,问题是shell_exec只将的输出保存stdout到变量中,并stderr直接发送给用户。

但是,我强烈建议您研究一下 Puppet 或 Ansible 等配置管理系统来执行这些任务。您的方法中存在太多安全问题,我认为您甚至不知道如何识别可能的问题。

相关内容