我正在尝试通过Web界面运行应用程序 - 更具体地说是源专用服务器。我使用以下代码执行此操作:
$old_path = getcwd();
chdir("[PATH]");
$tmp = exec("srcds -console -game tf +map ctf_2fort");
chdir($old_path);
不幸的是,该网站挂起,永远不会加载。通过命令提示符运行完全相同的命令可以正常工作,运行exec("echo %cd%")
输出正确的路径,我可以运行其他内容(例如简单地回显%time%
的示例.bat),依此类推等等。
我已经能够通过将stdout重定向到/dev/null/
来加载网站(用以下内容替换$tmp =
行:)
$tmp = exec("srcds -console -game tf +map ctf_2fort > /dev/null");
虽然这允许加载站点,但应用程序永远不会运行(并且该过程不会出现在任务管理器中)。
我尝试输出到文件,但这只输出两行,第一行是Using breakpad minidump system
,第二行是空的。它也没有启动应用程序。
$tmp = exec("srcds -console -game tf +map ctf_2fort > tmp.txt");
我对自己应该做的事情感到很遗憾 - 我对PHP很新,所以如果有任何明显的东西我都不知道,请说出来。
答案 0 :(得分:0)
尝试在命令中添加2>&1
。您还可以指定是否希望输出的每一行都显示为数组,如下所示:
$tmp = exec("srcds -console -game tf +map ctf_2fort 2>&1", $what_happened);
print_r($what_happened);
如果启用了安全模式,您可能会遇到一些问题...如果上述建议对您不起作用,您还可以查看system()和/或passthru()命令