使用php将文件从一台机器复制到另一台机器

brgchamk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(494)

我已经安装了两台ubuntu机器:192.168.1.104和192.168.1.105已经在生成的两台机器上安装了ssh ssh-keygen 并将密钥添加到两个ip地址。
我想通过php将文件从192.168.1.104复制到192.168.1.105。我试过这个命令 scp /home/tejas/hadoop/conf/core-site.xml tejas@192.168.1.105:/home/tejas/hadoop/conf/core-site.xml 通过shell脚本文件得到完美的复制,但当我通过php脚本运行相同的命令时 <?php $output = shell_exec('scp /home/tejas/hadoop/conf/core-site.xml tejas@192.168.1.105:/home/tejas/hadoop/conf/core-site.xml'); ?> 它没有显示任何错误,但是文件没有被复制。也尝试过类似的方法 exec() 还尝试了rysnc而不是scp rsync -avzh /home/tejas/hadoop/conf/mapred-site.xml tejas@192.168.1.105:/home/tejas/hadoop/conf/mapred-site.xml 还是不走运。
这两个命令都可以通过shell脚本完美地工作,但不能通过php工作
我检查了php是否处于安全模式,并且在php.ini中没有禁用shell\u exec()或exec()

agyaoht7

agyaoht71#

exec() 以及 shell_exec() 由运行php脚本的用户执行(通常是 www-data 但可能是 apache 或者别的什么)。很可能此用户对文件/文件夹没有权限。一种解决方案是创建一个新的用户组并添加用户( www-data )对于此组,然后对要复制/要复制到的文件/文件夹设置正确的所有权/权限。

相关问题