2012-12-04 63 views
-1

有什麼方法可以在php文件中執行makefile?我曾嘗試:如何在php文件中執行makefile

exec('cmd /c "C:\\Program Files\\Microsoft Visual Studio\\VC98\\Bin\\nmake.exe" -f E:\\dev\\temp.mak > process.out 2> process.err < /dev/null &');

但我DONOT覺得這種方式得到的makefile運行。

+3

你將一些linux命令行混合到那個windows的一箇中。或者反之亦然 – 2012-12-04 19:01:36

+0

我給:cmma的「nmake -f Makefile」來構建我的東西。 – user1558064

+0

對不起,請你糾正我的混音?是嗎 & ? – user1558064

回答

1

嘗試不同的方法來做到這一點,創建一個Windows批處理文件在您的PHP目錄相同的地方;

cd C:\"Program Files"\"Microsoft Visual Studio"\VC98\Bin 
nmake.exe -f E:\dev\temp.mak > process.out 2> process.err 

*結合Zids評論這個:*

你將如何在命令行中執行它,如果你沒有使用PHP? - rid

如果上述方法不起作用。通過在Windows命令提示符下運行,在線搜索該exe文件的用法,然後相應地更改.batch文件。 *

保存此作爲.batch文件,然後從你的PHP嘗試運行

exec ("filename.bat", $output); 

然後

查看由exec命令在一個簡單的foreach循環

foreach ($output AS $OutputStr) 
{ 
echo $OutputStr."<br>"; 
} 
進行輸出

應該有一些輸出,從輸出我會與之合作。

1

爲什麼不這樣做:

$make = escapeshellarg("C:\Program Files\Microsoft Visual Studio\VC98\Bin\nmake.exe"); 
$path = escapeshellarg("E:\dev\temp.mak"); 
exec("start /B {$make} -f {$path} > process.out 2> process.err"); 
  • start /B將在後臺執行程序

  • > process.out將標準輸出重定向到 「process.out」 文件

  • 2> process.err將重定向錯誤輸出到「process.err」文件

在此示例中,每次運行make時,將刪除process.outprocess.err。爲了避免這種行爲,只需用>>代替>符號,並且會附加文件。

+0

謝謝,你能不能讓我知道我可以給makefile的路徑? – user1558064

+0

是,已編輯。讓我知道如果需要 –

+0

非常感謝!我還可以問:當我使用start/B時,它似乎永遠運行,但是當我使用cmd/c時,我立即得到了輸出。再次感謝您幫助初學者。另外,你是否也知道如何在Web上輸出輸出而不是輸出文件? – user1558064