PHP fopen() function
Definition and Usage
The fopen() function opens a file or URL.
If the operation fails, this function returns FALSE.
Syntax
fopen(filename,mode,include_path,context)
Parameter | Description |
---|---|
filename | 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 | deze optie wordt ondersteund door PHP 4.3.2 en latere versies, en kan alleen worden gebruikt voor lokale bestanden. |
---|---|
"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. het bestand wordt aangemaakt en geopend in lees-schrijf modus, en de bestandspunt wordt naar het begin van het bestand verplaatst. Als het bestand al bestaat, zal de aanroep van fopen() falen en FALSE retourneren, en een E_WARNING-niveau foutbericht genereren. Als het bestand niet bestaat, zal een poging worden gedaan om het te creëren. is equivalent aan het toekennen van de O_EXCL|O_CREAT markering aan de onderliggende open(2) systeemoproep. |
"x+" |
"x+" het bestand wordt aangemaakt en geopend in lees-schrijf modus, en de bestandspunt wordt naar het begin van het bestand verplaatst. Als het bestand al bestaat, zal de aanroep van fopen() falen en FALSE retourneren, en een E_WARNING-niveau foutbericht genereren. Als het bestand niet bestaat, zal een poging worden gedaan om het te creëren. is equivalent aan het toekennen van de O_EXCL|O_CREAT markering aan de onderliggende open(2) systeemoproep. |
deze optie wordt ondersteund door PHP 4.3.2 en latere versies, en kan alleen worden gebruikt voor lokale bestanden.
vermeldt filename fopen() zal filename bindt de benoemde naambron aan een stroom. Alsis "als een URL in de "scheme://..."-format, dan wordt het beschouwd als een URL, PHP zal op zoek gaan naar een protocol handler (ook wel encapsulatieprotocol genoemd) om dit schema te verwerken. Als het protocol nog niet is geregistreerd als een encapsulatieprotocol, zal PHP een bericht uitgeven om problemen in het script te controleren en filename wordt voortgezet als een gewone bestandsnaam.
als PHP denkt dat filename een lokaal bestand is gespecificeerd, zal een stroom worden geopend op dit bestand. Dit bestand moet toegankelijk zijn voor PHP, dus moet je bevestigen dat de bestandstoegangsrechten deze toegang toestaan. Als veiligheidsmodus of open_basedir is geactiveerd, worden verdere beperkingen toegepast.
als PHP denkt dat filename specificeert een geregistreerde protocol, die is geregistreerd als een netwerk URL, PHP zal controleren en bevestigen dat allow_url_fopen is geactiveerd. Als dit is uitgeschakeld, zal PHP een waarschuwing uitgeven en zal de aanroep van fopen falen.
voor context ondersteuning is toegevoegd in PHP 5.0.0.
Waarschuwingen en commentaar
Opmerking:Verschillende besturingssysteemfamilies hebben verschillende gewoonten voor regelafsluiting. Als je een tekstbestand schrijft en een nieuwe regel wilt invoegen, moet je de regelafsluitingsindicator gebruiken die overeenkomt met het besturingssysteem. Systeem gebaseerd op Unix gebruikt \n als regelafsluitingscharacter, systeem gebaseerd op Windows gebruikt \r\n als regelafsluitingscharacter, en systeem gebaseerd op Macintosh gebruikt \r als regelafsluitingscharacter. Als je een verkeerde regelafsluitingsindicator gebruikt bij het schrijven naar een bestand, kunnen andere toepassingen die deze bestanden openen, vreemd reageren.
Windows biedt een tekstconversieteken ("t") om \n transparant om te zetten in \r\n. Dit is equivalent aan het gebruik van "b" om de binaire modus te forceren, zodat gegevens niet worden omgezet. Om deze markeringen te gebruiken, moet "b" of "t" als de laatste karakter van het mode parameter worden gebruikt.
Het standaard conversiemodel hangt af van het SAPI en de gebruikte PHP-versie, dus wordt ten zeerste aanbevolen om altijd het juiste teken te specificeren voor de portabiliteit. Als je puur tekstbestanden behandelt en \n als regeleinde gebruikt in de script, maar nog steeds verwacht dat deze bestanden kunnen worden gelezen door andere toepassingen zoals Notepad, gebruik dan in mode het "t"-teken. Gebruik in alle andere gevallen het "b"-teken.
Bij het werken met binair bestanden zonder het "b"-teken op te geven, kunnen er vreemde problemen optreden, waaronder kapotte afbeeldingsbestanden en vreemde problemen met de \r\n-caractères.
Opmerking:Vanwege compatibiliteit wordt ten zeerste aanbevolen om altijd het "b"-teken te gebruiken bij het openen van bestanden met fopen().
Opmerking:Opnieuw, vanwege compatibiliteit, wordt ten zeerste aanbevolen om die code die afhankelijk is van het "t"-systeem te herschrijven om juiste regeleindes te gebruiken en te wijzigen naar het "b"-systeem.
Voorbeeld
<?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"); ?>