Я пытаюсь перенести файлы с одного сервера на другой с помощью приведенного ниже кода.
rsync -avz -e "ssh -i /root/.ssh/somekey" /var/www/admin/somefiles.txt [email protected]:/var/www/html_public/some-folder/
Это работает очень хорошо, если я делаю это на шпатлевке, но если я делаю shell_exec
этот код на странице php и запустить страницу в браузере. Это не работает. Возвращает пустую строку.
Я надеюсь, что кто-то может помочь мне с этим. Заранее спасибо.
Во-первых, вам нужно проверить, являетесь ли вы пользователем root или (пользователем sudo) для запуска rsync.
Если да, то команда exec () будет работать, только если она запущена тем же пользователем на php-cli
(не в браузере пользователем Apache). т.е. каким пользователем вы вошли в оболочку для запуска rsync
,
Если это пользователь root или другой пользователь с разрешением sudo, то это rsync
команда может быть недоступна apache/www-data
пользователь, который работает, когда PHP-скрипт запускается из браузера.
Таким образом, вы пытаетесь сделать обычного пользователя и войти через него, затем попробуйте rsync
если вы добились успеха, то может быть интересно посмотреть, какие могут быть другие проблемы, но если вы получаете доступ / разрешение, запрещенное, то, очевидно, вы не сможете запустить этот скрипт по крайней мере в браузере.
Помимо этого, еще одно разрешение не может быть напрямую связано с rsync
сама команда, но с папкой /etc/test/
который принадлежит пользователю root в обычном сценарии.
Других решений пока нет …