感谢您今天抽出时间来帮助我。我希望这只是一个简单的问题。我一直在尝试使用php exec()或任何相关的php命令来打开Visual Studio 2013的开发人员命令提示符,并使用它编译文件并将输出保存到本地机器上的文件中。我在Windows上运行时它运行得很好,但我似乎无法让它与PHP exec()一起工作。以下是我当前设置命令的方式。
$cmd = 'C:'Program Files (x86)'Microsoft Visual Studio 12.0'Common7'Tools'VsDevCmd.bat && cd C:'wamp'www'csc424Try3'app'uploads && cl /EHsc basic.cpp && basic >> C:'wamp'www'csc424Try3'app'outputs'output.txt';
exec($cmd, $result);
正如您所看到的,我正在将命令链接在一起。第一个命令允许打开提示符,第二个命令更改到正确的目录,第三个命令在提示符中运行编译命令,第四个命令输出到文本文件。
你知道我哪里错了吗?我有一种感觉,这与格式化有关,但也许将命令链接在一起在PHP中并不像在系统中那样有效。
您忘记了exec调用字符串中大多数参数的引号,这意味着像Program Files
这样的东西将被视为两个独立的东西,而不是一个目录。
$cmd = '"C:'Program Files (x86)'....VsDevCmd.bat" && etc...';
^-- ^-- need these
按原样,您正在尝试执行一个名为C:'Program
的程序,其中包含一些额外的参数,如Files (x86)'.....
。
经过一番研究,我找到了自己问题的答案。我以前尝试的方法就是不起作用。在与一位同事交谈后,我认为为后台编写.bat文件会更好,而且确实如此。我在.bat文件中编写了命令链,并按照如下方式执行;
system("cmd/c c:''wamp''www''csc424Try3''app''uploads''stuff.bat");
成功!该文件现在可以从PHP成功编译和运行。:)今天天气不错。