2014-01-09 152 views
0

我想使用PHP來運行一個shell腳本,將文件從服務器1發送到服務器2.我有服務器1的公鑰寫入服務器2 authorized_keys,它的工作原理完美。PHP運行一個shell腳本到scp

出於某種原因,下面的腳本實際上並沒有從服務器1發送文件到服務器2:

// This is a webpage at http://server1.com/sendfile.php 
<?php 
if($_POST['a']) 
{ 
     echo '<pre>'; 
     echo passthru('./scp.sh'); 
     echo '</pre>'; 
} 
?> 

<form method="post"> 
<button name="a" value="Af">Send File</button> 
</form> 

//This is the contents of scp.sh 
scp ../dbexport/db.txt [email protected]: 

所以,當我從scp.sh從終端執行,一切工作正常 - 該文件實際上被髮送和接收。

但是當我去http://server1.com/sendfile.php並按下按鈕時,php文件實際上執行shell文件(我通過在scp命令之前和之後放置echo語句來確認這一點),但該文件從未被server2.com成功接收過

有誰知道這可能是爲什麼?

+1

您是否已將密鑰添加到網絡服務器帳戶的authorized_keys中?僅僅因爲它可以在你的權限下運行的shell運行,這對於在web服務器的ID下運行的shell毫無意義。 –

+0

ooooh yeahhhhh ....我忘記了那個 – John

+0

它的工作。謝謝Marc! – John

回答

0

馬克乙回答我的問題與評論...在這裏發帖

你添加的關鍵web服務器的帳戶的authorized_keys的?僅僅因爲它可以在你的權限下運行的shell運行,這對於在web服務器的ID下運行的shell毫無意義。 - 馬克·乙1月9日在19:47

OOOOH yeahhhhh ....我忘了這一點約翰 - 1月9日在19:57

燁它的工作。謝謝Marc! - John Jan 9 at 20:42