我想使用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成功接收過
有誰知道這可能是爲什麼?
您是否已將密鑰添加到網絡服務器帳戶的authorized_keys中?僅僅因爲它可以在你的權限下運行的shell運行,這對於在web服務器的ID下運行的shell毫無意義。 –
ooooh yeahhhhh ....我忘記了那個 – John
它的工作。謝謝Marc! – John