2013-10-03 63 views
1

從命令行:不同的PHP的exec()輸出(的Apache2)

sudo -u apache php -r 'exec("rsync -avi --rsh=\"ssh -o StrictHostKeyChecking=no -p22\" --omit-dir-times /var/www/html/ [email protected]:/var/www/html/ 2>&1", $a, $n);print_r($a);'; 

返回該(我想這樣的輸出):

Array 
(
    [0] => sending incremental file list 
    [1] => <f+++++++++ testrsync 
    [2] => 
    [3] => sent 9143 bytes received 47 bytes 18380.00 bytes/sec 
    [4] => total size is 25642011 speedup is 2790.21 
) 

但從的Apache2:

exec("rsync -avi --rsh=\"ssh -o StrictHostKeyChecking=no -p22\" --omit-dir-times /var/www/html/ [email protected]:/var/www/html/ 2>&1", $a, $n); 
print_r($a); 

我得到這樣的輸出:

array (
    0 => 'sending incremental file list', 
    1 => ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '', 
    312 => 'sent 139318 bytes received 183398 bytes 215144.00 bytes/sec', 
    313 => 'total size is 25642011 speedup is 79.46', 
) 

測試之前,我和兩個從終端和瀏覽器的rsync刪除testrsync文件成功傳輸testrsync文件,但在Apache2的它並沒有顯示這條線:

<f+++++++++ testrsync 

我想要得到的修改列表文件由Rsync在瀏覽器中完成。

的Apache/2.2.15,PHP 5.4.20,Centos的6.4

回答

0

發現了問題:

Rsync的輸出是這樣的:

[1] => <f..t...... logo-1.png 

[2] => <f..t...... logo.png 

和瀏覽器解析<新標籤所以我得到空輸出,但源代碼顯示完整的輸出。我花了一個多小時來調試它; D

1

您可以將該文件(使用php頭文件)保存爲.txt而不是html或php。在瀏覽器中不會發生編組