PHP执行程序无法通过Visual Studio 2012命令提示符在Windows 8上进行编译


PHP exec not working for compiling on Windows 8 through Visual Studio 2012 Command Prompt

感谢您今天抽出时间来帮助我。我希望这只是一个简单的问题。我一直在尝试使用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成功编译和运行。:)今天天气不错。