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