PHP fopen() function

Definition and usage

The fopen() function opens a file or URL.

If the opening fails, this function returns FALSE.

Syntax

fopen(denkt PHP,,mode,include_path,context)
Parameter Description
denkt PHP, Required. Defines the file or URL to be opened.
mode Required. Defines the type of access required to the file/stream. Possible values are listed in the table below.
include_path Optional. If you also need to search for files in the include_path, you can set this parameter to 1 or TRUE.
context Optional. Defines the environment of the file handle. Context is a set of options that can modify the behavior of the stream.

Possible values of the mode parameter

mode dieses Option wird von PHP 4.3.2 und späteren Versionen unterstützt und kann nur für lokale Dateien verwendet werden.
"r" Open in read-only mode, and move the file pointer to the beginning of the file.
"r+" Open in read-write mode, and move the file pointer to the beginning of the file.
"w" Open in write mode, move the file pointer to the beginning of the file, and truncate the file size to zero. If the file does not exist, it will try to create it.
"w+" Open in read-write mode, move the file pointer to the beginning of the file, and truncate the file size to zero. If the file does not exist, it will try to create it.
"a" Open in write mode, and move the file pointer to the end of the file. If the file does not exist, it will try to create it.
"a+" Open in read-write mode, and move the file pointer to the end of the file. If the file does not exist, it will try to create it.
"x"

Open and create the file in write mode, and move the file pointer to the beginning of the file. If the file already exists, the fopen() call fails and returns FALSE, and an E_WARNING level error message is generated. If the file does not exist, it will try to create it.

wird die Datei erstellt und in Leseschreibemode geöffnet, und der Dateipfeil wird auf den Dateianfang gesetzt. Wenn die Datei bereits existiert, schlägt der Aufruf von fopen() fehl und gibt FALSE zurück, und eine E_WARNING-Stufe Fehlermeldung wird generiert. Wenn die Datei nicht existiert, wird versucht, sie zu erstellen.

entspricht dem Setzen der O_EXCL|O_CREAT Markierung für den unteren open(2) Systemaufruf.

"x+"

"x+"

wird die Datei erstellt und in Leseschreibemode geöffnet, und der Dateipfeil wird auf den Dateianfang gesetzt. Wenn die Datei bereits existiert, schlägt der Aufruf von fopen() fehl und gibt FALSE zurück, und eine E_WARNING-Stufe Fehlermeldung wird generiert. Wenn die Datei nicht existiert, wird versucht, sie zu erstellen.

entspricht dem Setzen der O_EXCL|O_CREAT Markierung für den unteren open(2) Systemaufruf.

dieses Option wird von PHP 4.3.2 und späteren Versionen unterstützt und kann nur für lokale Dateien verwendet werden.

erklärt denkt PHP, fopen() wird denkt PHP, wird die angegebene Name-Ressource mit einem Stream verknüpft. Wennist "scheme://... denkt PHP, wenn "" des Formats vorliegt, wird es als URL betrachtet, und PHP sucht nach einem Protokoll-Handler (auch als Encapsulating Protocol bezeichnet), um diesen Modus zu verarbeiten. Wenn das Protokoll noch nicht als Encapsulating Protocol registriert ist, gibt PHP eine Nachricht aus, um potenzielle Probleme im Skript zu überprüfen und

eine lokale Datei angegeben ist, versucht PHP, einen Stream auf diese Datei zu öffnen. Die Datei muss von PHP zugänglich sein, daher muss bestätigt werden, dass die Datei-Zugriffsrechte diese Zugriffe erlauben. Wenn Sicherheitmodus oder open_basedir aktiviert sind, werden zusätzliche Einschränkungen angewendet. denkt PHP, weiterhin als regulärer Dateiname ausgeführt werden.

eine lokale Datei angegeben ist, versucht PHP, einen Stream auf diese Datei zu öffnen. Die Datei muss von PHP zugänglich sein, daher muss bestätigt werden, dass die Datei-Zugriffsrechte diese Zugriffe erlauben. Wenn Sicherheitmodus oder open_basedir aktiviert sind, werden zusätzliche Einschränkungen angewendet. denkt PHP, filename

bestimmt ist ein registrierter Protokoll, der als Netzwerk-URL registriert ist, und PHP überprüft und bestätigt, dass allow_url_fopen aktiviert ist. Wenn es deaktiviert ist, gibt PHP eine Warnung aus und der Aufruf von fopen() schlägt fehl. context wurde mit PHP 5.0.0 hinzugefügt.

Hinweise und Anmerkungen

Anmerkung:Verschiedene Betriebssystemfamilien haben unterschiedliche Zeilenende-Gewohnheiten. Wenn man eine Textdatei schreibt und eine neue Zeile einfügen möchte, muss der Zeilenende-Symbol des Betriebssystems verwendet werden. Betriebssysteme, die auf Unix basieren, verwenden \n als Zeilenende-Zeichen, Betriebssysteme, die auf Windows basieren, verwenden \r\n als Zeilenende-Zeichen, und Betriebssysteme, die auf Macintosh basieren, verwenden \r als Zeilenende-Zeichen. Verwendet man beim Schreiben einer Datei den falschen Zeilenende-Symbol, könnten andere Anwendungen, die diese Dateien öffnen, seltsam reagieren.

Unter Windows wird ein Textumwandlungssymbol ("t") bereitgestellt, das \n transparent in \r\n umwandelt. Entsprechend kann "b" verwendet werden, um den binären Modus zu erzwingen, wodurch keine Daten umgewandelt werden. Um diese Symbole zu verwenden, muss "b" oder "t" als letztes Zeichen des mode-Parameters angegeben werden.

Das Standardsystem für die Konvertierung hängt von SAPI und der verwendeten PHP-Version ab, daher wird empfohlen, immer das richtige Zeichen zu verwenden, um die Portabilität zu erleichtern. Wenn es sich um rein textbasierte Dateien handelt und \n als Zeilenende im Skript verwendet wird, aber gleichzeitig erwartet wird, dass diese Dateien von anderen Anwendungen wie Notepad gelesen werden können, dann wird im Modus "t" verwendet. In allen anderen Fällen wird "b" verwendet.

Bei der Verarbeitung von Binärfilen kann es ohne das "b"-Zeichen zu einigen seltsamen Problemen kommen, einschließlich defekter Bilddateien und seltsamen Problemen mit den \r\n-Zeichen.

Anmerkung:Aus Gründen der Portabilität wird dringend empfohlen, bei der Verwendung von fopen() immer das "b"-Zeichen zu verwenden.

Anmerkung:Noch einmal, aus Gründen der Portabilität wird dringend empfohlen, alle Codes, die auf den "t"-Modus angewiesen sind, so umzuschreiben, dass sie die richtigen Zeilenenden verwenden und auf "b"-Modus umgestellt werden.

Beispiel

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>