我正在尝试使用 PHP 脚本获取服务器的虚拟主机列表,但每当我尝试使用 exec() 函数运行
apache2ctl -S
命令时,它都不起作用。
问题是,每当我通过终端运行相同的命令时,它工作得很好,但是当我用 exec 运行它时,它只打印 Action '-S' failed.
我更正了答案,因为我不确定我是否理解请求的上下文。
如果脚本在网页上运行,您应该检查网络服务器是否具有正确的权限:尝试
sudo -u www-data sh
(对您的apache/ngnix用户执行sudo)然后启动apache2ctl -S
。您将看到网络服务器是否可以使用该参数启动该命令。
如果脚本以CLI模式运行,它将拥有启动它的用户的权限。但是,您可以尝试将 stderr 重定向到 stdout 以捕获一些丢失的输出:
exec ('apache2ctl -S 2>&1', $output, $returnCode);