fopen

(PHP 3, PHP 4 )

fopen -- Öffnet eine Datei oder URL

Beschreibung

int fopen ( string filename, string mode [, int use_include_path])

Wenn filename mit "http://" (nicht case sensitive) beginnt, wird zu dem spezifiziertem Server eine HTTP 1.0 Verbindung geöffnet, die Seite mittels der HTTP GET Methode angefordert, und ein Dateizeiger auf den Anfang des Textes der Antwort zurückgegeben. Ein 'Host:' header wird mit der Anfrage geschickt, um namens-basierte Virtual Hosts zu verarbeiten.

Ab PHP 4.3.0 (noch nicht freigegeben) können Sie eine HTTP Verbindung über SSL mit "https://" verwenden, wenn Sie PHP mit Unterstützung für OpenSSL kompiliert haben.

Beachten Sie, dass Ihnen der Dateizeiger nur den Empfang des body aus der Antwort erlaubt. Um den HTTP Antwortheader zu erhalten, benötigen Sie PHP ab Version 4.0.5. Die Headers werden in der Variable $http_response_header gespeichert. Ab PHP 4.3.0 (noch nicht freigegeben) kann die Header Information mittels file_get_wrapper_data() geholt werden.

HTTP Verbindungen sind nur zum Lesen, d.h. Sie können keine Daten schreiben oder Dateien an eine HTTP Ressource kopieren.

In älteren Versionen als PHP 4.0.5 werden Weiterleitungen (HTTP Redirects) nicht unterstützt, hier muss die Datei daher vollständig und mit abschließendem "/" beschrieben werden.

Wenn filename mit "ftp://" (nicht case sensitive) beginnt, wird eine ftp-Connection zu dem spezifizierten Server geöffnet und ein Zeiger auf die angeforderte Datei zurückgegeben. Wenn der Server keinen passiven FTP-Modus unterstützt, wird diese Methode fehlschlagen. Sie können Dateien entweder zum Schreiben oder zum Lesen öffnen, jedoch nicht für beides gleichzeitig. Wenn die entfernte Datei bereits auf dem FTP-Server existiert und Sie versuchen sie zum Schreiben zu öffnen, wird das nicht funktionieren. Wenn Sie bestehende Dateien über FTP aktualisieren wollen, verwenden Sie ftp_connect().

Wenn filename "php://stdin", "php://stdout", oder "php://stderr" ist, wird der korrespondierende stdio stream geöffnet (Feature wurde in Version 3.0.13 eingeführt, in früheren Versionen muss der Dateiname wie z.B. "/dev/stdin" oder "/dev/fd/0" benutzt werden, um auf die stdio streams zuzugreifen).

Wenn filename mit irgendetwas anderem beginnt, wird die Datei vom lokalen Dateisystem geöffnet und ein Dateizeiger auf die geöffnete Datei zurückgegeben.

Wenn das Öffnen scheitert, gibt die Funktion FALSE zurück.

mode kann einen der folgenden Werte einnehmen:

Zusätzlich kann mode der Buchstabe 'b' hinzugefügt werden, der die Behandlung von Binär-Dateien erlaubt. Dies ist nur auf Systemen sinnvoll, welche zwischen Binär- und Text-Dateien unterscheiden (z.B. Windows. Ist bei Unix sinnlos). Wenn das Feature nicht gebraucht wird, wird es einfach ignoriert.

Sie können optional ein dritten Parameter benutzen und diesen auf '1' setzten, wenn Sie auch im include_path nach der Datei suchen möchten.

Beispiel 1. fopen()

$fp = fopen ("/home/simi/simi.txt", "r");
$fp = fopen ("/home/simi/simi.gif", "wb");
$fp = fopen ("http://www.example.com/", "r");
$fp = fopen ("ftp://user:password@example.com/", "w");

Wenn Sie Probleme mit dem Lesen oder Schreiben von Dateien haben und PHP als Servermodul benutzen, stellen Sie zunächst sicher, dass die Dateien und Verzeichnisse die Sie benutzen wollen auch für den Server-Prozess zugänglich sind (Rechtevergabe).

Achten Sie auf Windows-Systemen darauf, dass Sie als Verzeichnistrenner normale Schrägstriche '/' benutzen um plattformunabhängig programmieren zu können. Sollten Sie dennoch Backslashes verwenden, vergessen Sie nicht diese zu escapen '\\'

$fp = fopen ("c:\\data\\info.txt", "r");

Siehe auch fclose(), fsockopen(), socket_set_timeout(), und popen().