FTP mit PHP

Datei-Management via Internet mit FTP

Das FTP-Protokoll bietet Datei-Management über das Internet. Häufigste Anwendung ist die Synchronisation von Webs.
PHP Hypertext Processor PHP PHP Hypertext Processor
FTP Was ist FTP und wozu wird es verwendet ?
Entwicklung Die empfohlene Entwicklungs-Umgebung für 'FTP mit PHP'
Alternativen Datei-Transfer mit Kermit, Telnet, SSH, die Dienste NFS und SMB
FTP mit PHPNutzung von FTP durch PHP-Programme
Aufbau der Verbindung (connect) mit einem FTP-Server
Dateiliste, Eigenschaften von Dateien
Wechsel des Verzeichnisses
Upload und Download - Kopieren von Dateien
Directory
Erzeugung und Löschen von Verzeichnissen
Links Ausgewählte FTP-PHP-Links Links zum Thema 'FTP mit PHP'

File Transfer Protokoll - FTP

FTP ist ein vergleichsweise "altes" Internet-Protokoll.
Heute wird es vorwiegend zur Synchronisation von Webs verwendet.
Die Seiten des Kapitels "FTP" demonstrieren die Steuerung von FTP-Funktionen mit PHP.
Ein typisches Web wird auf einem lokalen PC entwickelt. Alle verwendeten Dateien (Webseiten, Bilder, ...) befinden sich innerhalb eines "Web-Verzeichnisses" (z.B. C:\meinweb\)

Web-Editoren (z.B. Dreamweaver, Golive, Frontpage, ...) verwalten dieses Verzeichnis: Die Links aller Webseiten werden automatisch an Dateinamen und -Pfade angepasst.

Im Laufe der Entwicklung werden die Webseiten lokal getestet. Statische Seiten (*.htm) können direkt mit einem Browser geöffnet werden. (Adresse file:... oder C:\....)
Bei PHP-Seiten muss ein Webserver auf das Web-Verzeichnis zugreifen. Solche Seiten können ebenfalls lokal getestet werden, müssen jedoch über den Webserver geöffnet werden. (Adresse http://... )

Nach Fertigstellung und Test wird der "Upload" auf den eigentlichen Webserver durchgeführt: Alle neuen und geänderten Dateien werden vom lokalen PC in ein Verzeichnis des Webservers kopiert. Der Upload wird bei FreeWeb-Providern meist manuell auf eigenen Werkzeug-Webseiten ausgeführt. Professionelle Provider bieten FTP-Upload. Dieser Dienst bietet wesentlich bequemere Handhabung und die Möglichkeit der Automatisierung.
Das → Konsolen-Programm ftp ist in der Grund-Ausrüstung aller gängigen Betriebssysteme enthalten.
Auf Linux verwenden sie ein Shell-Fenster, auf Windows das Programm 'Eingabeaufforderung' (C:\Windows\system32\cmd.exe)
Der Befehl zum Programmstart lautet einfach ftp
Auf allen Betriebssystemen sind alternative FTP-Konsolen-Programme verfügbar, die mehr Komfort bieten.
Konsolen-FTP-Programme werden hauptsächlich zur Entwicklung und zum Debuggen eigener FTP-Programme verwendet.

FTP-Anwendungs-Programme sind in allen Betriebssystemen verfügbar, viele auch als FreeWare oder ShareWare, z.B. FileZilla
Sie verfügen über einen Site-Manager, auf welchem die Zugangsdaten (Adresse, Name, Passwort) für mehrere FTP-Verbindungen eingestellt werden können.
Nach Verbindung (connect) werden 2 Fenster angezeigt: Links die Ansicht eines lokalen Verzeichnisses, rechts diejenige des entfernten Servers. Mit Menübefehlen, Buttons oder einfach durch "Drag & Drop" werden Dateien zwischen den beiden Fenstern kopiert.
Häufig verwendete FTP-Anweisungen:

LIST .. Anzeige der Dateiliste (lokal oder entfernt) eines Verzeichnisses

PUT .. Upload, d.h. Kopieren einer Datei vom lokalen PC auf den entfernten Server.

GET .. Download, d.h. Kopieren einer Datei vom entfernten Server auf den lokalen PC.

DELETE .. Löschen einer Datei

CHDIR .. Wechsel in ein Unterverzeichnis

MKDIR .. Erstellen eines Unterverzeichnisses

RMDIR .. Löschen eines Unterverzeichnisses

CHMOD .. Änderung der Zugriffsrechte auf ein Verzeichnis oder eine Datei.

Entwicklungs-Umgebung

Theoretisch können Sie PHP-Webseiten mit jedem Text-Editor erstellen, auf einen entfernten Webserver laden und anschliessend verwenden. Das klappt jedoch nur in ganz einfachen Fällen. Eine realistische Entwicklungs-Umgebung umfasst alle Einrichtungen zur PHP-Entwicklung, zusätzlich einen FTP-Server und ein FTP-Programm.
Entwicklung von Webseiten:
Web-Editor zum Verwalten des Webs und zum Erstellen der Webseiten. Alle gängigen Editoren können nicht nur HTML-Seiten erzeugen sondern auch PHP-Seiten.
Web-Browser zum Test der erstellten Webseiten. Ideal sind mehrere Browser, damit sie unabhängige Tests ihrer Webseiten ausführen können (z.B. Firefox, Konqueror, M$IE, Mozilla, Navigator, Opera, ...).
Ein Webserver (z.B. → Apache) stellt auf "Anfrage" von Browsern Webseiten mit dem HTTP-Protokoll zur Verfügung. Statische Webseiten ( *.html ) werden von der entsprechenden Text-Datei gelesen und an den Browser gesendet. Bei dynamischen Webseiten (*.php) wird am Server-PC ein PHP-Script-Programm ausgeführt und dessen Ausgabe-Text an den Browser gesendet.
Am Webserver muss mindestens ein Verzeichnis zum FTP-Upload eingerichtet sein: In diesem Verzueichnis muss der User (d.i. der Webserver-Dienst, nicht menschliche AnwenderInnen) über alle Rechte verfügen.
PHP muss funktionsfähig geladen sein. Die benötigten Funktionen befinden sich im Modul 'ftp'.
Details zu PHP-Modulen finden sie in einem eigenen Kapitel.
$ftp_ok=0;
if (extension_loaded("ftp") {$ftp_ok=1;}
Live-Live-PHP-PHP:   $ftp_ok = 1
FTP-Client-Programme:
Jedes Betriebssystem bietet FTP als Konsolen-Befehl (mit integrierter Hilfe) an. Die Bedienung erfordert etwas Übung, das ist jedoch zum Debuggen eigener Entwicklungen 'sehr empfehlenswert'.

Zusätzlich sollten sie über ein übliches FTP-Anwendungsprogramm verfügen. Sie sind zahlreich auch als Freeware und Shareware verfügbar. Viele dieser Programme sind mit Scripts (leider nicht standardisiert) programmierbar. Sie werden daher nicht nur für den manuellen Upload verwendet, sondern auch zur automatischen Synchronisation von Verzeichnissen. Die Erstellung eigener FTP-Programme macht nur Sinn, wenn die Anforderungen über die Möglichkeiten von FTP-Client-Programmen hinausgehen.
FTP-Server:
Ein FTP-Server reagiert auf Anfragen eines FTP-Client-Programms. Zahlreiche Server-Programme werden angeboten, darunter auch Freeware und Shareware.
Die Einstellung eines experimentellen FTP-Servers ist denkbar einfach. Im professionellken Betrieb sind allerdings zahlreiche Maßnahmen zur Sicherung notwendig, die einige Einarbeitung erfordern.

Der FTP-Server verfügt normalerweise über alle Zugriffsrechte auf das Arbeitsverzeichnis des Webservers. Nur in diesem Fall können lokale Dateien mit FTP-Upload auf den Webserver gelangen. Diese Funktion muss geschützt werden.
Zusätzlich ist es üblich, anonymen BesucherInnen ein Verzeichnis "public" zum Download (readonly) anzubieten.
Checkliste vor Beginn der Entwicklung:
Wenn sie mit FTP & PHP experimentieren wollen, dann sollten sie manuell einige Tests ausführen, die sicherstellen, dass ihre PHP-Programme überhaupt funktionieren können:
Diese Tests sollten sowohl mit dem Konsolenbefehl FTP als auch mit einem Client-FTP-Programm funktionieren:
Die Checkliste sollten sie sowohl mit dem eigenen experimentellen FTP-Server durchgehen als auch mit einem entfernten FTP-Server
Verbindung (connect) mit dem FTP-Server
Anmeldung (login) mit Name und Passwort
Anzeige einer Dateiliste
Upload einer Datei
Download einer Datei
Löschen einer entfernten Datei
Erstellen eines Verzeichnisses am entfernten Server
Wechsel in ein Verzeichnis und Anzeige der Dateiliste
Löschen eines entfernten Verzeichnisses.
Firewall und Proxy
Wenn sie in einem lokalen Netzwerk (LAN) arbeiten, dann kann es vorkommen, dass sie zwar mit einem lokalen FTP-Server verbinden können, nicht jedoch mit einem entfernten FTP-Server.
Die Ursache ist meist, dass der FTP-Zugriff durch Firewall oder Proxy unterbunden wurde. Sie können das mit WebFTP (rechts) verifizieren.
Mit PHP können sie Programme erstellen, die FTP nutzen. Wenn diese Programme auf einem entfernten Webserver laufen, dann können sie FTP sozusagen 'hinter dem Rücken' ihres Firewall problemlos verwenden.
Test:
Versuchen sie, mit dem entfernten FTP-Server via WebFTP (z.B. http://www.webftp.at) Verbindung aufzunehmen. In diesem Fall verwenden sie das HTTP-Protokoll zum "Durchdringen" des Firewall. Wenn das funktioniert, jedoch nicht die direkte FTP-Verbindung, dann verhindert ihr Firewall jeden FTP-Zugriff. Abhilfe kann nur der Firewall-Administrator verschaffen.

Alternativen zu FTP

FTP ist nicht die einzige Möglichkeit, Dateimanagement über das Internet zu betreiben. FTP hat jedoch den Vorteil. unabhängig von Betriebssystemen, Herstellern und Hardware zu arbeiten. FTP ist ein Offener Standard, zu dessen Nutzung keine Lizenzen benötigt werden.
Kermit
Dieses Protokoll wurde in den 1980er-Jahren entwickelt und diente zum Austausch von Dateien über die Barierre verschiedener Hardware und Betriebssysteme hinweg. Kermit war eines der ersten OpenSource-Programme.
Kermit arbeitet über ganz unterschiedliche technische Verbindungen, u.a. auch über serielle Leitungen.
Obwohl heute für alle Betriebssysteme Kermit-Programme kostenlos und lizenzfrei zur Verfügung stehen, wird es nur mehr selten verwendet. Gut geeignet für das Debuggen, insbesondere bei exotischen und Hardware-nahen Problemen.
Mit Developer-Kits können sie sehr schlanke Kermit-Programme für jeden Mikroprozessor-Chip selbst erstellen.
Link: Columbia University
Copy
Wenig bekannt, aber im Notfall sehr hilfreich:
Über eine einfache serielle Leitung kann man Daten zwischen 2 PC austauschen. Ältere PC sind immer mit 1-2 seriellen Schnittstellen (RS-322, RS-422) ausgestattet.
Syntax für die WinDOS-Konsole:
Sender:
C:\> COPY C:\TEST.DAT COM1:
Empfänger:
C:\> COPY COM1: C:\TEST.DAT
Telnet
Ist wie FTP ein "altes" Protokoll. Gut geeignet für die Fernsteuerung entfernter PC und anderer Geräte, auch für den Austausch von Dateien.
Telnet verwendet das Client-Server-Prinzip: Jedes Betriebssystem enthält in der Grundausstattung das → Konsolen-Programm telnet als Telnet-Client.
Telnet-Server sind als Freeware oder Shareware erhältlich.

Telnet transportiert seine Anweisungen und Daten unverschlüsselt im Klartext ! Wegen der geringen Sicherheit und den gefährlich umfangreichen Möglichkeiten wird geraten, keinen Telnet-Server sondern den sicheren Nachfolger ↓ SSH zu verwenden.
SSH
Ist der "sichere" Nachfolger von Telnet. SSH wird auf Linux häufig als Konsole zum Fernsteuern verwendet (OpenSSH), es gibt jedoch auch SSH-Programme für Windows (OpenSSH-Windows, FreeSSHD).

Auf Linux kann man die normale Shell-Konsole als SSH-Client verwenden.
Bekannte und bewährte SSH Client-Programme für Windows sind PuTTY und WinSCP.
Geeignet für Fernsteuerung und den Austausch von Dateien, insbesondere über verschiedene Betriebssysteme hinweg.
NFS
Ist ein Standard-Dienst auf Linux. Damit werden Dateisysteme von entfernten PC verknüpft. NFS verwendet das Client-Server-Prinzip. Normalerweise ist jeder PC im Netz NFS-Client, Datei-Server sind zusätzlich NFS-Server, d.h. sie "exportieren" Teile ihres Verzeichnis-Baums.

Entfernte (NFS)-Verzeichnisse werden transparent in ein lokales Linux-Verzeichnis integriert. Die entfernten Dateien sind damit für alle Programme zugänglich, und zwar ohne jeden Unterschied zu lokalen Dateien. Selbstverständlich gelten auch für entfernte Dateien die vergebenen Zugriffsrechte.
SMB
Ist der Dateiserver-Dienst auf Windows. Win-Fileserver und PC verwenden SMB, um gemeinsam genutzte Volumes oder Verzeichnisse anzubieten. Sie können mit entsprechenden Zugriffsrechten als "Netzlaufwerke" verbunden werden und verhalten sich dann genauso wie lokale Volumes.

Die Verwendung von SMB ist zwar vielen Win-AnwenderInnen geläufig, allerdings ist die Technik veraltet und gegenüber NFS im Nachteil:
Die Adressierung als 'Volume' verhindert eine fugenlose Einbindung in den lokalen Verzeichnisbaum. Da jedes Volume einen eigenen "Laufwerks-Buchstaben" benötigt, ist die mögliche Anzahl solcher Netzlaufwerke für übliche Lokale Netzwerke (LANs) bereits zu klein.

Samba FileServer Linux-Fileserver verwenden das Standardprogramm Samba, um gemeinsam genutzte Daten für Windows-PC anzubieten. Samba ist sehr schnell und außerordentlich stabil. Das SMB-Protokoll ist nicht öffentlich, sondern im Eigentum von M$, allerdings fallen für Samba keine Lizenzgebühren an.

Ein Samba-Server gehört zur Grundausstattung aller gängigen Linux-Distributionen und → LAMP-Server. Aktuelle Versionen kann man kostenfrei aus dem Internet laden. Samba übernimmt auf Wunsch auch die Funktionen eines Domain Controllers.

Details zum Samba FileServer

FTP-PHP-Links Ausgewählte Links zum Thema 'FTP mit PHP'

Dynamic Webpages (de) - FTP-Funktionen Webftp - Datei-Transfer mit dem Browser

Letzte Änderung dieser Seite: 2011-12-01 09:25:36