2013-07-04 125 views
0

我試圖運行一個應用程序 - 更具體地說是源專用服務器 - 通過網絡接口。我正在使用以下代碼執行此操作:PHP執行不啓動應用程序

$old_path = getcwd(); 
chdir("[PATH]"); 
$tmp = exec("srcds -console -game tf +map ctf_2fort"); 
chdir($old_path); 

不幸的是,該網站掛起,並且從不加載。通過命令提示符運行相同的確切命令完美地工作,運行exec("echo %cd%")輸出正確的路徑,我可以從文件夾中運行其他東西(例如簡單地回顯%time%的示例.bat),等等。

我已經能夠通過標準輸出重定向到/dev/null/(含更換$tmp =線,使網站加載了:)

$tmp = exec("srcds -console -game tf +map ctf_2fort > /dev/null"); 

雖然這使網站的加載,應用程序將永遠不會運行(和該進程不會出現在任務管理器中)。

我試着輸出到一個文件,但這只是輸出兩行,第一個說Using breakpad minidump system,第二個空。它也不啓動應用程序。

$tmp = exec("srcds -console -game tf +map ctf_2fort > tmp.txt"); 

我在茫然,我應該做的 - 我是相當新的PHP,所以如果有什麼明顯我丟失,請不要這麼說。

回答

0

嘗試將2>&1添加到命令中。您還可以指定,如果你想從輸出的每一行發生了什麼事,以顯示爲一個數組,像這樣:

$tmp = exec("srcds -console -game tf +map ctf_2fort 2>&1", $what_happened); 
print_r($what_happened); 

如果安全模式時,你可能會遇到一些問題,但...如果以上建議對您不起作用,您也可以查看system()和/或passthru()命令。

+0

不幸的是,這些問題與以前一樣;該頁面從不加載。將輸出寫入一個變量只會返回一個0長度的數組(當重定向stdout時,因爲它不會啓動,所以很顯然輸出爲空) – Birjolaxew

相關問題