Я установил 2 машины Ubuntu: 192.168.1.104 & 192.168.1.105 установили ssh на обе сгенерированные машины ssh-keygen
на 104 машине и добавил ключ к обоим ip-адресам.
Я хочу скопировать файл с одного 192.168.1.104 на 192.168.1.105 через php.
Я пробовал эту команду scp /home/tejas/hadoop/conf/core-site.xml [email protected]:/home/tejas/hadoop/conf/core-site.xml
через скрипт оболочки файл копируется отлично, но когда я запускаю ту же команду через 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
все еще не повезло.
обе команды отлично работают через скрипт оболочки, но не работают через php
Я проверил, что php не находится в безопасном режиме, и shell_exec () или exec () не отключены в php.ini.
exec()
а также shell_exec()
выполняется пользователем, запускающим скрипт php (обычно www-data
на Ubuntu, но может быть apache
или что-то другое). Вероятно, у этого пользователя нет прав на файлы / папки. Одним из решений является создание новой группы пользователей и добавление пользователя (www-data
) для этой группы, затем установите правильное право владения / разрешения для файлов / папок для копирования / копирования.
Других решений пока нет …