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

时间:2016-04-20 14:22:28

标签: php hadoop ssh rsync scp

我已经设置了2台Ubuntu机器:192.168.1.104& 192.168.1.105在104机器上生成ssh-keygen的机器上安装了ssh,并为两个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-script

运行相同的命令时

<?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_exec()或exec()

1 个答案:

答案 0 :(得分:0)

exec()shell_exec()由运行php脚本的用户执行(通常在Ubuntu上为www-data,但可能是apache或其他内容)。该用户可能没有文件/文件夹的权限。一种解决方案是创建一个新用户组并将用户(www-data)添加到该组,然后在要复制/复制到的文件/文件夹上设置正确的所有权/权限。