PHP FTP-Script programmieren

Clocker 2800+

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.409
Hi.

ich möchte ein kleines FTP-Script in php programmieren, dass ich auf meinen Server ablege.

Die Funktionsweise sollte so sein:

1. Ich logge mich mit den Daten (Passwort, ...) bei einen anderen FTP-Server ein. (von dem ich später die Dateien holen will)

2. Ich durchsuche (nehme) ein bestimmtes Verzeichnis von den anderen FTP-Server (von dem ich die Dateien holen will)

3. ...und kopiere sie auf meinen Server (auf dem das Script liegt und gestartet wird).

soweit so gut.

Das problem ist, dass ich nur Scripts finde, die ich am Quell-Server ablegen und von dort aus starten muss.

Wer kann mir da helfen ?
 
...nur wird wohl, wie asdfman schon andeutete, ein php-script nicht auf einem FTP-Server laufen, zumindest denn du den FTP-Server mit "Quell-Server" meinst... ;-)
 
Sorry, habe wohl etwas falsch verstanden. Der FTP Server versteht nur bestimmte Anweisungen, siehe asdfman.
Was soll damit überhaupt erreicht werden?
Zum suchen und herunterladen gibts jede Menge Clientsoftware.
 
Also eine Datei kann ich jetzt schon mal rüberziehen. :D

Hab jetzt "ftp_get" genommen, da "ftp_fget" nicht gegangen ist. --> Warum auch immer ?!
 
Zuletzt bearbeitet:
ftp_fget benötigt lokal geöffnetes Filehandle z.B. von fopen.
Damit sind blockweise Operationen möglich.
Für eine ganze Datei geht es natürlich auch mit ftp_fget.
Habe aber immer noch nicht richtig mitbekommen was du da eigentlich machst?
 
DIe geschichte hat im Normalfall jedoch einen Haken.
Deine PHP-Script-Exceution-Time beträgt im Normalfall 30 Sekunden. Sprich dein Script hat genau 30 Sekunden Zeit die Datei vom server zu saugen und die weitere Verarbeitung zu machen. Trifft natürlich nur zu wenn du kein Root hast und es nicht ändern kannst. Aber wenn du Root hast, dann würd ich für diesen zweck lieber ein Shellscript schreiben.

Letztendlich kannst du dir dein gewünschtes Script aus bereits exisiteren Scripts zusammenkopieren.
 
Na ja. Es gibt ja set_time_limit. :D

/edit:
Gibt es jetzt einen Code für genau den Umgekehrten Upload ?

Also die php datei ruft einen Befehl auf,
der eine Datei von einem anderen (externen) FTP-Server
auf einen zweiten (externen) FTP-Server hochgeladen wird.


Und die php-Datei, die das ganze starten soll, liegt und wird wieder von einem anderen Webhoster aus gestartet.

Die Benutzerdaten, ... usw. hab ich für alle zwei FTP-Server.


Gibt es da einen passenden Code ?
Wäre euch echt dankbar.
 

Anhänge

  • Übersicht.JPG
    Übersicht.JPG
    19 KB · Aufrufe: 165
Zuletzt bearbeitet:
wenn du mit den php integrierten ftp befehlen nicht weiterkommst wird dir wohl nix anderes übrig bleiben als fsock_open() und das ganze dann echt mit den FTP Befehlen managen, guck dir dazu dann am besten mal die FRC Spezifikation an, alternativ kann ich diese Seite hier empfehlen: http://www.moritzschubel.de/pc_ftp.html
 
Es ist das gleiche Spiel wie mit ftp_get, nur nimmst du hier statt dessen ftp_put.

Ab PHP 4.3 und aktivierten 'fopen wraper' geht es auch einfach mit dem copy Befehl.

bool copy ( string $source , string $dest )

copy(ftp://user:passwd@<server>/<directory>/<filename>, ftp://user:passwd@<server>/<directory>/<filename>)

PS: Aus irgend einem Grund wird bei mir statt Doppelpunkt p ein Symiley angezeigt.
Also ... username<Doppelpunkt>password@<server> ....
 
Zuletzt bearbeitet:
Also mit dem Copy-Befehl kann ich ja direkt eine Datei von einem FTP zum anderen FTP kopieren.

Geht das auch noch mit einen anderen Befehl ?

Denn bei den ftp_put-Befehl muss die zu kopierende Datei ja auf den Webspace liegen, auf dem das Script (mit dem Kopiervorgang) ausgeführt wird.
 
Zuletzt bearbeitet:
Hier verstehe ich die Frage nicht ganz, im ersten Teil holst du die die Datei mit ftp_get herunter, liegt also auf deinem 'php Server', im zweiten Teil wird diese heruntergeladene Datei vom 'php Server' auf einen anderen FTP Server wieder hoch geladen und danach ggf. auf dem php Server wieder gelöscht.

Natürlich gibt es noch andere Möglichkeiten, die hängen aber immer vom deinem 'php Server', Version, Konfiguration und Plugins ab. Und natürlich von deinen Programmierfertigkeiten.
 
viiiel einfacher: Kontrolliere deinen Server per SSH, dort kannst du auch beliebige Befehle reinhacken und bei Bedarf automatisieren ... per PHP das ganze Zeug erledigen zu wollen ist eine schlechte Idee denn PHP ermöglicht irgendwelchen Scriptkiddies das Auslesen deines Passworts, ist ineffizient und wirklich nur für einfachstes Scripting geeignet, dein genannter Anforderungsbereich ist aber schon weit ausserhalb desselben.
 
Ab Beitrag Nr. 9 ist das eine ganz andere Frage.
hat also nix mit den vorherigen (ersten Beiträgen) zu tun.

Kontrolliere deinen Server per SSH
Leider sind das aber nicht meine FTP-Server. Diese FTP-Server sind nämlich von einem Webspace-Hoster.
 
Clocker 2800+ schrieb:
Ab Beitrag Nr. 9 ist das eine ganz andere Frage.
Nö. Is das selbe in Grün, lediglich die Richtung des "Datenflusses" hat sich geändert.

Wenn das so is; Man kann auch Shell-Befehle über PHP ausführen, prüfe mal bitte ob der safe_mode von PHP aktiviert ist oder ob es Einschränkungen in Bezug auf native Befehle gibt.
 
Nö, der der Beitrag 9 zeigt das er das mit der http://www.ietf.org/rfc/rfc959.txt immer noch nicht verstanden hat oder verstehen will. Es gibt beim Standard FTP keinen 'Befehl' der einen FTP Server anweisen kann etwas auf einen anderen FTP Server zu kopieren. Die Standard FTP Server sind sind in dem Bereich halt dumm, sie kennen dafür nur get und put.
Falls das mit dem php copy Befehl nicht funktioniert, unterstützt der PHP Server eben nicht den 'fopen wrapper', womit eine 'Streaming' Lösung auch nicht in Frage kommt.
 
Es gibt beim Standard FTP keinen 'Befehl' der einen FTP Server anweisen kann etwas auf einen anderen FTP Server zu kopieren
Code:
put
, und dabei spielt nur diese Frage eine Rolle:
Man kann auch Shell-Befehle über PHP ausführen, prüfe mal bitte ob der safe_mode von PHP aktiviert ist oder ob es Einschränkungen in Bezug auf native Befehle gibt.
Heute 19:19
 
Zuletzt bearbeitet:
Zurück
Oben