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