【问题标题】:execute exe file from an application with system使用系统从应用程序执行 exe 文件
【发布时间】:2012-02-17 10:31:43
【问题描述】:

我有一个 Gams application 我想通过 php 代码运行它 在尝试了很多事情之后,我终于发现在命令行中运行我应该去C:\Program Files\GAMS23.7在命令行中运行一个命令来运行应用程序,如下所示:

gams.exe trnsport_php.gms

Gams 将在命令行中成功运行现在我想在 php 中运行它我用这个路径添加了一个别名

C:\Program Files\GAMS23.7

然后我在那里创建了我的 php 文件 当我想用 php 中的这段代码来执行它时:

if(system('gams.exe trnsport_php.gms'))
echo 'Not Error';
else echo'Error';

它显示错误

再次使用这个:

if(system('./gams.exe trnsport_php.gms'))
echo 'Not Error';
else echo'Error';

再次打印错误

我也试过 exec 但没有结果我不知道这里出了什么问题。 这个也不行:

if(system ("\"C:\\Program Files\\GAMS23.7\\gams.exe \"C:\\Program Files\\GAMS23.7\\trnsport_php.gms"))
echo'success';
else
echo 'no';

【问题讨论】:

    标签: php system


    【解决方案1】:

    我发现了我不知道为什么的问题,但我应该去命令行并简单地调用游戏

    echo exec('C:\WINDOWS\system32\cmd.exe');
    echo exec('gams.exe trnsport_php.gms');
    

    【讨论】:

      【解决方案2】:

      systemexec 命令在失败时返回 false,在成功时从执行命令的结果返回最后一行。要测试命令是否成功运行,您必须像这样使用它:

      if (system('./gams.exe trnsport_php.gms') === FALSE)
        echo 'error';
      else
        echo 'success';
      

      如果您不使用=== FALSE,如果没有产生输出,您也会看到“错误”。

      也许可以尝试使用passthru 来查看执行命令的原始输出。

      【讨论】:

      • 谢谢它告诉我成功,但它不起作用,因为运行时,它应该生成一个文本文件,但它没有成功!所以它不执行:-?
      • 好吧,无论使用 ==false 都是错误的!它是 == 不是 === 所以它向我发送错误执行被拒绝
      • === 也检查变量类型,而0 == '0' 返回 TRUE,0 === '0' 返回 FALSE。检查gams.exe 的文件权限。
      • 我应该如何检查我是否有 Windows 操作系统
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多