php exec() rsync ssh 到远程服务器不工作

php exec() rsync ssh to remote server not working

我正在尝试将文件从本地同步到远程服务器。 当我在控制台上执行此操作时它有效:

rsync -avzhe ssh /var/www/folder1/file5 root@192.168.56.74:/var/www/folder2

但是当我在 php 和 运行 php 脚本上执行此操作时,它不起作用:

$rysncCommand = "rsync -avzhe ssh /var/www/folder1/file5 root@192.168.56.74:/var/www/folder2";

shell_exec($rysncCommand);

没有显示任何错误,所以我无法真正判断错误是什么。我的 php 脚本有问题吗?

首先,您需要检查 运行ning rsync 是否需要成为根用户或(sudo 用户)。

如果是,则 exec() 命令只有在 运行 由同一用户在 php-cli 上(不是 Apache 用户在浏览器上)才有效。即您登录哪个用户 shell 运行 rsync

如果它是 root 或任何具有 sudo 权限的高权限用户,则此 rsync 命令可能无法用于 apache/www-data 正在工作的 php 脚本 [=33] 用户=] 来自浏览器。

所以你尝试创建一个普通用户并通过它登录,然后尝试 rsync 如果你成功了那么看看还有什么其他问题可能很有趣,但是如果你得到 access/permission 拒绝那么显然你不能 运行 这个脚本至少在浏览器上。

除此之外,One more thing 权限可能与 rsync 命令本身没有直接关系,但与正常情况下由 root 用户拥有的文件夹 /etc/test/ 相关。

有关更多详细信息,您可以查看此 Stack Overflow Link