Domanda

Voglio usare PHP per eseguire uno script di shell che invia un file dal server 1 al server 2. Ho il tasto pubblico Server 1 scritto sul server 2 autorizzato_Keys e funziona perfettamente.

Per qualche motivo il seguente script non invia effettivamente il file dal server 1 al server 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:
.

Quindi quando eseguito da scp.sh dal terminale, tutto funziona bene - il file viene inviato e ricevuto.

Ma quando vado a http://server1.com/sendfile.php e premi il pulsante, il file PHP esegue effettivamente il file shell (l'ho confermato inserendo le istruzioni di eco prima e dopo il comando SCP), ma il file non viene mai ricevuto correttamente da Server2.com

.

Qualcuno sa perché questo potrebbe essere?

È stato utile?

Soluzione

Marc B ha risposto alla mia domanda con un commento ... Pubblicazione qui

Hai aggiunto la chiave per gli autorizzati degli account del webserver?Solo perché funziona da una shell che corre sotto le tue autorizzazioni significa assolutamente nulla per una shell che corre sotto l'ID di Webserver.- Marc B 9 gennaio alle 19:47

ooooh yeahhhhhh .... Ho dimenticato questo - John Jan 9 alle 19:57

YUP ha funzionato.Grazie Marc!- Giovanni 9 gennaio alle 20:42

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top