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