我有这个问题中的相同问题。如果我再解释一遍,我可以使用 rsync 将我的本地数据与服务器同步,而无需密码(我使用了 SSH 密钥)。但是当我在 PHP 中使用 exec() 函数时,它不起作用。
提出上述问题的人已经自己给出了答案。他说这可以通过允许 Apache 用户帐户无密码访问服务来完成。所以我的问题是如何为 Apache 用户帐户提供对服务器的无密码访问?
我的 PHP 代码是:
echo exec('rsync -aze --progress --size-only /var/tmp/src/File01 serveruser@mycloud.com.lk:/var/tmp/dest/File01');
PS:我使用我的典型用户帐户(假设用户名是' bob ')登录我的机器,并使用ssh-keygen -t rsa
. 然后鲍勃可以无密码访问服务器。
但是,当我运行 PHP 命令时,它在 Apache 下运行,mod_php
并且通常 Apache 作为自己的用户帐户运行,独立于使用服务器的现实世界的人。因此,我生成的密钥对 Apache 内的 PHP 不可用。
因此我尝试以 Apache 用户身份登录(我认为它是www-data)。但是大多数文章都说www-data默认没有密码,无法以www-data身份登录。
谢谢你。