2011-09-30 88 views
1

我想嘗試看到兩個了shell_exec(輸出)在一個.txt調用file.So我想這:PHP了shell_exec()導致txt文件?

$data_server = shell_exec('./c5.0demo -f $username -r'); 
$errorFile = "error.txt"; 
$fileopen = fopen($errorfile, 'w') or die ("can't open file"); 
fwrite($fileopen, $data_server); 

$data_server2 = shell_exec('./predictBatch -f $username -r > $username.result'); 
$fileopen = fopen($errorfile, 'w') or die ("can't open file"); 
fwrite($fileopen, $data_server2); 

可執行「c5.0demo」和「predictBatch」是在這個PHP腳本的相同目錄。 變量$用戶名通過POST方法檢索到:$用戶= $ _POST [ '用戶名']; 作爲一個數組我該把另一個變量中的值:

foreach($user as $val) 
$username .= $val; 

我認爲這是正確的,但我沒有我的目錄裏面的「error.txt」。 爲什麼我錯了? 感謝您的支持!

+0

我想知道如果使用擴展型變量的參數是問題的至少一部分:'」 ./predictBatch -f $用戶名-r> $ username.result''應該是'」 ./predictBatch -f $用戶名-r> $ username.result 「'(注意'」',而不是''')這也無二的第一線。見:http://www.php.net/manual/en/language.types。 string.php#language.types.string.parsing –

+0

TNX賈裏德。如果我在「改變」這是行不通的。它不會創建error.txt文件。我在想:有可能我必須指定創建該文件的目錄? – Andre

+0

指定絕對路徑將是一個很好的故障排除步驟。這可能是一個權限問題,運行該文件的進程沒有該目錄的寫入權限。 –

回答

0

嘗試以下操作:

$data_server = shell_exec("./c5.0demo -f $username -r"); 
$data_server2 = shell_exec("./predictBatch -f $username -r > $username.result"); 

file_put_contents("/path/to/log/error.txt","{$data_server} : {$data_server2}\n",FILE_APPEND); 

顯然$用戶名需要定義 - 也,什麼是$用戶名的數據類型?我問,因爲$ username.result看起來非常錯誤。

你也應該採取非常嚴重注@mobius警告。