【问题标题】:PHP Exec Does not Launch ApplicationPHP Exec 不启动应用程序
【发布时间】:2013-07-04 18:26:10
【问题描述】:

我正在尝试通过 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 还很陌生,所以如果我有什么明显的遗漏,请说出来。

【问题讨论】:

    标签: php exec


    【解决方案1】:

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

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

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

    【讨论】:

    • 不幸的是那些和以前一样的问题;该页面永远不会加载。将输出写入变量只返回一个长度为 0 的数组(重定向标准输出时,否则它不会启动,因此很明显输出为空)
    猜你喜欢
    • 1970-01-01
    • 2012-08-10
    • 2011-04-15
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2016-04-17
    相关资源
    最近更新 更多