2011-09-30 150 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警告。