0

我想使用 PHP 运行一个 shell 脚本,将文件从服务器 1 发送到服务器 2。我将服务器 1 的公钥写入服务器 2 的授权密钥,它运行良好。

由于某种原因,以下脚本实际上并未将文件从服务器 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 someuser@server2.net:

因此,当我scp.sh从终端执行时,一切正常 - 文件实际上被发送和接收。

但是当我去http://server1.com/sendfile.php按下按钮时,php文件实际上执行了shell文件(我通过在scp命令之前和之后放置echo语句来确认这一点),但是server2.com从未成功接收到该文件

有谁知道这可能是为什么?

4

1 回答 1

0

Marc B 用评论回答了我的问题...在此处发布

您是否将密钥添加到网络服务器帐户的授权密钥?仅仅因为它可以在您的权限下运行的 shell 中运行,对于在网络服务器 ID 下运行的 shell 来说绝对没有任何意义。– 马克 B 1 月 9 日 19:47

哦,是的……我忘记了——约翰 1 月 9 日 19:57

是的,它奏效了。谢谢马克!——约翰 1 月 9 日 20:42

于 2014-01-14T03:59:59.923 回答