0

我正在尝试通过 Web 界面运行应用程序 - 更具体地说是源专用服务器。我正在使用以下代码执行此操作:

$old_path = getcwd();
chdir("[PATH]");
$tmp = exec("srcds -console -game tf +map ctf_2fort");
chdir($old_path);

不幸的是,该站点挂起,并且从未加载。通过命令提示符运行相同的命令可以完美运行,运行exec("echo %cd%")输出正确的路径,我可以从文件夹中运行其他东西(例如简单地回显的示例 .bat %time%)等等。

我已经能够通过将标准输出重定向到/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 还很陌生,所以如果我有什么明显的遗漏,请说出来。

4

1 回答 1

0

尝试添加2>&1到命令中。您还可以指定是否希望将发生的输出的每一行显示为数组,如下所示:

$tmp = exec("srcds -console -game tf +map ctf_2fort 2>&1", $what_happened);
print_r($what_happened);

如果开启了安全模式,您可能会遇到一些问题……如果上述建议对您不起作用,您还可以查看system()和/或passthru()命令。

于 2013-07-04T19:42:57.053 回答