2016-04-20 125 views
1

我已经安装了2台Ubuntu机器:192.168.1.104 & 192.168.1.105在两台机器上都安装了ssh,在104台机器上生成ssh-keygen,并将密钥添加到两个ip地址。将文件从一台机器复制到其他机器使用php

我想通过php将文件从一个192.168.1.104复制到192.168.1.105。 我试过这个命令scp /home/tejas/hadoop/conf/core-site.xml [email protected]:/home/tejas/hadoop/conf/core-site.xml 通过shell脚本文件被完全复制,但是当我通过PHP脚本运行相同的命令

<?php $output = shell_exec('scp /home/tejas/hadoop/conf/core-site.xml [email protected]:/home/tejas/hadoop/conf/core-site.xml'); ?>

它亘古不变的显示任何错误,但不列入文件被复制。也试过类似exec()也试过rysnc而不是scp rsync -avzh /home/tejas/hadoop/conf/mapred-site.xml [email protected]:/home/tejas/hadoop/conf/mapred-site.xml仍然没有运气。

两个命令是完全通过shell脚本,但努力通过PHP

我检查PHP不工作是不是在安全模式和了shell_exec()或者exec()在php.ini

没有被禁用

回答

0

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

+0

将尝试并发布结果 – darkrider

+0

完成'sudo adduser tejas','sudo useradd -d/var/www -G www-data tejas'并给予文件的所有权仍然无效 – darkrider

+0

如果我的步骤是错误的 – darkrider

相关问题