2012-07-04 37 views
0

我想從我的php腳本運行一個可執行文件,命令行中使用的命令是
其中,profit是可執行文件,profit.in是輸入文件。我寫了下面的PHP腳本運行同一程序時,在命令提示符下運行在文件中傳遞命令?

+0

使用'system'功能來嘗試 –

+0

您的profit.in文件在哪裏?當你的PHP腳本運行時,你確定profit.in文件與你的php腳本認爲它運行的目錄是一樣的嗎? – BugFinder

+0

@BugFinder是的,我看了很久以前...... profit.in和php腳本都在同一個文件夾 –

回答

0

執行不會將結果返回給$profit,試試這樣:

exec('C:/xampp/htdocs/example/profit.exe < profit.in',$results,$status); 
if ($status === 0) 
{ 
    var_dump($results);//will be an array 
} 

還要確保路徑你的參數文件是正確的,如果它沒有被腳本生成,最好使用絕對路徑。


由於您的通話exec使我相信你的工作在Windows中,路徑分隔符是反斜線,你應該逃避,太:

exec('C:\\xampp\\htdocs\\example\\profit.exe < profit.in',$results,$status); 

是什麼它應該看起來像imo。

剛纔想到的第二個可能的問題是:您正在Windows機器上使用xampp。如果您是從命令行運行此腳本,請確保您使用的是正確的exe文件:php-cli.exe,而不是php.exe

+0

Thanls @Elias :)但輸出打印爲一個數組...我怎樣才能刪除數組並打印正常輸出作爲一個字符串? –

+0

任何你喜歡的方式,它只是一個像任何其他數組。如果你需要在控制檯/命令提示符下打印出來:'echo implode(''\ n「,$ results);'這裏,雙引號是重要的,當使用單引號時'\ n'將被視爲一個字符串,不是換行。你也可以循環數組('while($ line = array_shift($ results))'或'for($ i = 0; $ i

+0

再次感謝:) @Elias –