2017-02-20 123 views
0

我正在尝试使用下面的代码将文件从一台服务器传输到另一台服务器。Rsync在浏览器上不起作用

rsync -avz -e "ssh -i /root/.ssh/somekey" /var/www/admin/somefiles.txt [email protected]:/var/www/html_public/some-folder/ 

如果我这样做对腻子它工作得很好,但如果我这样做shell_exec这段代码的PHP网页上,并在浏览器中运行的页面。这是行不通的。它返回一个空字符串。

我希望有人能帮助我。提前致谢。

回答

1

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

如果是,那么exec()命令将仅在php-cli(不在Apache用户的浏览器上)由同一用户运行时才起作用。即您将哪个用户登录到shell中以运行rsync

如果它是root或任何具有sudo权限的许可权限用户,则此rsync命令可能不适用于apache/www-data用户,该用户在php脚本从浏览器运行时正在工作。

所以你试着做一个普通的用户并通过它登录,然后尝试rsync如果你成功了,那么看看其他问题可能会是有趣的,但是如果你获得访问权限,那么显然你可以至少在浏览器上不要运行这个脚本。

除此之外还有一件事权限可能不直接与rsync命令本身直接相关,而是与在正常情况下由root用户拥有的文件夹/etc/test/直接相关。

相关问题