PHP fopen() funktionen
Definition og brug
fopen() funktionen åbner en fil eller URL.
Hvis åbning mislykkes, returnerer denne funktion FALSE.
Syntaks
fopen(filename,mode,include_path,context)
Parameter | Beskrivelse |
---|---|
filename | Obligatorisk. Definerer den fil eller URL, der skal åbnes. |
mode | Obligatorisk. Definerer den ønskede adgangstype til denne fil/stream. Mulige værdier ses i tabellen nedenfor. |
include_path | Valgfri. Hvis der også skal søges efter filer i include_path, kan parameteren sættes til 1 eller TRUE. |
context | Valgfri. Definerer miljøet for filhandle. Context er et sæt af valgmuligheder, der kan ændre strømmens adfærd. |
Mögliche værdier for mode-parameters
mode | forklaring |
---|---|
"r" | Åbn filen til læse kun og placér filpegmentet ved filens hoved. |
"r+" | Åbn filen til læse/skrive og placér filpegmentet ved filens hoved. |
"w" | Åbn filen til skrivning og placér filpegmentet ved filens hoved, og sæt filstørrelsen til nul. Hvis filen ikke eksisterer, forsøger den at oprette den. |
"w+" | Åbn filen til læse/skrive og placér filpegmentet ved filens hoved, og sæt filstørrelsen til nul. Hvis filen ikke eksisterer, forsøger den at oprette den. |
"a" | Åbn filen til skrivning og placér filpegmentet ved filens afslutning. Hvis filen ikke eksisterer, forsøger den at oprette den. |
"a+" | Åbn filen til læse/skrive og placér filpegmentet ved filens afslutning. Hvis filen ikke eksisterer, forsøger den at oprette den. |
"x" |
Åbne filen til skrivning og placér filpegmentet ved filens hoved. Hvis filen allerede eksisterer, mislykkes kaldet til fopen() og returnerer FALSE, og genererer en advarsel af E_WARNING-niveau. Hvis filen ikke eksisterer, forsøger den at oprette den. dette er lig med at specificere O_EXCL|O_CREAT-mærket til underliggende open(2) systemkald. dette valg understøttes af PHP 4.3.2 og senere versioner og kan kun bruges til lokale filer. |
"x+" |
oprettes og åbnes i skrive/ligeskrive mode, og filpegeren placeres ved filens start. Hvis filen allerede eksisterer, vil kaldet til fopen() mislykkes og returnere FALSE, og en E_WARNING-niveau fejlmeddelelse genereres. Hvis filen ikke eksisterer, vil der blive forsøgt oprettet. dette er lig med at specificere O_EXCL|O_CREAT-mærket til underliggende open(2) systemkald. dette valg understøttes af PHP 4.3.2 og senere versioner og kan kun bruges til lokale filer. |
forklaring
fopen() vil filename angivne navn ressourcer bindes til en strøm. Hvis filename er "scheme://...i "formatet, bliver det betragtet som en URL, og PHP vil søge efter en protokollhåndterer (også kendt som en indpakket protokol) for at håndtere dette format. Hvis protokollen endnu ikke er registreret som en indpakket protokol, vil PHP udstede en besked for at hjælpe med at kontrollere potentielle problemer i scriptet og filename fortsættes som en almindelig filnavn.
hvis PHP mener filename angiver en lokal fil, vil der blive forsøgt åbnet en strøm på denne fil. Filen skal være tilgængelig for PHP, hvilket betyder at filadgangsretningerne skal bekræftes, at denne adgang er tilladt. Hvis sikkerhedsmode eller open_basedir er aktiveret, vil der blive anvendt yderligere begrænsninger.
hvis PHP mener filename angiver en registreret protokol, som er registreret som en netværks-URL, og PHP vil kontrollere og bekræfte, at allow_url_fopen er aktiveret. Hvis det er deaktiveret, vil PHP udstede en advarsel, og kaldet til fopen vil mislykkes.
på context støtte blev tilføjet i PHP 5.0.0.
Påmindelser og kommentarer
Kommentar:Forskellige operativsystemfamilier har forskellige linjeskiftsvaner. Når der skrives til en tekstfil og der ønskes indsat en ny linje, skal den linjeskiftssymbolet, der er kompatibelt med operativsystemet, bruges. Unix-baserede systemer bruger \n som linjeskiftssymbolet, Windows-baserede systemer bruger \r\n som linjeskiftssymbolet, og Macintosh-baserede systemer bruger \r som linjeskiftssymbolet. Hvis forkerte linjeskiftssymboletter bruges ved skrivning til fil, kan andre programmer, der åbner disse filer, opføre sig mærkeligt.
Windows tilbyder en tekstkonverteringsmarkør ("t") som kan transparentt konvertere \n til \r\n. Tilsvarende kan "b" bruges for at tvunget bruge binært mode, hvilket betyder at dataene ikke vil blive konverteret. For at bruge disse markører skal enten "b" eller "t" bruges som den sidste karakter i mode parameteren.
Standardkonverteringsmodellen afhænger af SAPI og den PHP-version, der bruges, så for at fremme portabilitet anbefales det at altid specificere passende markører. Hvis du opererer med ren tekstfil og bruger \n som linjeskilte i skriptet, men stadig forventer, at disse filer kan læses af andre programmer som Notepad, skal du bruge "t" i mode. I alle andre tilfælde skal du bruge "b".
Når du opererer med binære filer uden at specificere "b"-markøren, kan du støde på nogle mærkelige problemer, herunder ødelagte billedfiler og mærkelige problemer med \r\n-tegnene.
Kommentar:Af hensyn til portabilitet anbefales det kraftigt at altid bruge "b"-markøren, når du åbner filer med fopen().
Kommentar:Endnu engang, af hensyn til portabilitet, anbefales det kraftigt, at du omskriver den kode, der er afhængig af "t"-modellen, så den bruger korrekte linjeskilte og ændres til "b"-modellen.
Eksempel
<?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"); ?>