使用 php 捕获“nginx -t”的输出

使用 php 捕获“nginx -t”的输出

我正在尝试为运行 nginx 和 php-fpm 的 Web 服务器制作一个简单的控制面板。

我已设法捕获service php5-fpm restart和的结果service nginx reload,但的输出nginx -t显然不能以相同的方式工作?

我尝试过$out = shell_exec('nginx -t');,就像我在上面另外两个例子中使用的那样。但是当我运行脚本时,它只会打印出结果,变量$out为空。

我也尝试过同时shell()使用输出参数和popen()与之结合fread(),但结果是一样的。

我想要实现的是使用的结果更新我的 mysql 数据库中的一个字段nginx -t

有什么办法可以做到这一点吗?

答案1

这更多的是一个编程问题而不是 ubuntu 问题所以它可能应该在 stack overflow 中。

但是您的问题可能是错误没有被捕获,因为您要求的是 STDOUT,而错误被输出到 STDERR。

有两种可能的解决方案。

第一个是使用 php 函数捕获 STDERR。我对 php 了解不够多,无法回答这个问题。

第二种是将 STDERR 定向到 STDOUT。运行

nginx -t 2>&1

这告诉 shell 将写入 STDERR 的所有内容移至 STDOUT。

有关文件流和 stderr 的更多信息:http://en.wikipedia.org/wiki/Standard_streams#Standard_error_.28stderr.29

相关内容