Esecuzione del comando shell rsync in php


2

Sto provando a fare un rsyncda amazon cloudal mio computer locale usando php.

io ho

$copy = 'rsync -acz ubuntu@ec3-51-123-131-111.compute-1.amazonaws.com:/project/file.txt .'

shell_exec ($copy)

Tuttavia, il file non viene copiato e non viene visualizzato alcun messaggio di errore. Qualcuno può darmi un suggerimento al riguardo? Grazie mille!


Hai provato a eseguirlo dalla riga di comando della shell? Qual'era il risultato?
Kyle Jones,

Credo che ci possa essere un messaggio di errore su STDERR, che potrebbe finire nel registro degli errori dei server Web e non nell'output della pagina come potrebbe essere STDOUT.
dlamblin,

quale chiave ssh stai usando? Sta chiedendo una password o l'hai impostata con un portachiavi / login senza password? Ricorda che ho avuto un problema simile qualche tempo fa che è stato risolto con l'utilizzo del portachiavi.
James,

rsync è nel percorso? which rsyncpotrebbe essere / bin / rsync dovrebbe funzionare meglio nello script?
Yurij73,

Risposte:


1

Ci sono alcune cose che potrebbero andare male qui. Prima di tutto, ti manca un punto e virgola alla fine della $copydichiarazione variabile. La tua sceneggiatura dovrebbe essere

$copy = 'rsync -acz user@server:/home/user/foo.txt .';
shell_exec ($copy);

Se questo è solo un errore di battitura nel tuo post e non è come lo script reale, assicurati di poter eseguire correttamente il comando da un terminale, senza bisogno di inserire una password. Se puoi, riavvia il tuo script php ma monitora i tuoi log degli errori. Supponendo che tu stia eseguendo questo script attraverso un server web apache, sarebbe

tail -f /var/log/apache2/error.log
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.