Вопрос

Я хочу использовать 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 успешно.

Кто-нибудь знает, почему это может быть?

Это было полезно?

Решение

Марк Б ответил на мой вопрос комментарием... написав здесь.

вы добавили ключ в авторизованные ключи учетной записи веб-сервера?Тот факт, что он работает из оболочки, работающей под ВАШИМИ разрешениями, абсолютно ничего не значит для оболочки, работающей под идентификатором веб-сервера.— Марк Б.

оооо дааааа....я забыл об этом — Джон

да, это сработало.спасибо, Марк!— Джон

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top