PHP запускает сценарий оболочки для scp
Вопрос
Я хочу использовать PHP для запуска сценария оболочки, который отправляет файл с сервера 1 на сервер 2.У меня есть открытый ключ сервера 1, записанный на авторизованные ключи сервера 2, и он работает отлично.
По какой-то причине следующий скрипт фактически не отправляет файл с сервера 1 на сервер 2:
// This is a webpage at http://server1.com/sendfile.php
<?php
if($_POST['a'])
{
echo '<pre>';
echo passthru('./scp.sh');
echo '</pre>';
}
?>
<form method="post">
<button name="a" value="Af">Send File</button>
</form>
//This is the contents of scp.sh
scp ../dbexport/db.txt someuser@server2.net:
Поэтому, когда я выполняю из scp.sh
с терминала все работает нормально - файл действительно отправляется и принимается.
Но когда я иду в http://server1.com/sendfile.php
и нажмите кнопку, файл php фактически выполняет файл оболочки (я подтвердил это, поставив операторы echo до и после команды scp), но файл никогда не принимается сервером server2.com успешно.
Кто-нибудь знает, почему это может быть?
Решение
Марк Б ответил на мой вопрос комментарием... написав здесь.
вы добавили ключ в авторизованные ключи учетной записи веб-сервера?Тот факт, что он работает из оболочки, работающей под ВАШИМИ разрешениями, абсолютно ничего не значит для оболочки, работающей под идентификатором веб-сервера.— Марк Б.
оооо дааааа....я забыл об этом — Джон
да, это сработало.спасибо, Марк!— Джон