我已经安装了两台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()
1条答案
按热度按时间agyaoht71#
exec()
以及shell_exec()
由运行php脚本的用户执行(通常是www-data
但可能是apache
或者别的什么)。很可能此用户对文件/文件夹没有权限。一种解决方案是创建一个新的用户组并添加用户(www-data
)对于此组,然后对要复制/要复制到的文件/文件夹设置正确的所有权/权限。