我有一个 PHP 脚本,可以自动下载 Nginx 并设置我的 Web 服务器。它可以执行以下操作:创建 Nginx 配置文件、生成 SSL 证书,以及其他令人惊叹的功能。它通过 SSH、php file.php 命令运行。
不幸的是,由于一些原因,我不会在这里发布它,但我会展示我遇到的问题的例子。
例如,我通过命令行界面运行脚本几秒钟后,得到以下输出:
rm: cannot remove...
(不存在的文件)
或者我有这个代码:
if(!preg_match("/nginx/", shell_exec("nginx -v"))) {
并输出 Nginx 版本并显示命令的输出apt-get
(shell_exec()
)。
我怎样才能解决这个问题?
答案1
PHP 的文档页面上shell_exec()
有评论解决了您的问题。基本上,问题是shell_exec
只将的输出保存stdout
到变量中,并stderr
直接发送给用户。
但是,我强烈建议您研究一下 Puppet 或 Ansible 等配置管理系统来执行这些任务。您的方法中存在太多安全问题,我认为您甚至不知道如何识别可能的问题。