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.