PHP fopen() funktion

Definition och användning

fopen() funktionen öppnar en fil eller URL.

Om öppning misslyckas returnerar denna funktion FALSE.

Syntaks

fopen(filename,mode,include_path,context)
Parameter Beskrivning
filename Obligatorisk. Anger den fil eller URL som ska öppnas.
mode Obligatorisk. Anger den typ av åtkomst som krävs till denna fil/ström. Möjliga värden visas i tabellen nedan.
include_path Valfritt. Om det också behövs att söka efter filer i include_path, kan detta argument sättas till 1 eller TRUE.
context Valfritt. Anger filhandtagets miljö. Context är ett sett med alternativ som kan ändra strömmens beteende.

Möjliga värden för mode-argumentet

mode betyder
"r" Öppna i läge för läsning, flytta filpekaren till filens början.
"r+" Öppna i läge för läs- och skriv, flytta filpekaren till filens början.
"w" Öppna i skrivläge, flytta filpekaren till filens början och klipp av filstorleken till noll. Om filen inte finns försöker den skapas.
"w+" Öppna i läge för läs- och skriv, flytta filpekaren till filens början och klipp av filstorleken till noll. Om filen inte finns försöker den skapas.
"a" Öppna i skrivläge, flytta filpekaren till filens slut. Om filen inte finns försöker den skapas.
"a+" Öppna i läge för läs- och skriv, flytta filpekaren till filens slut. Om filen inte finns försöker den skapas.
"x"

Öppna och skriv i skrivläge, flytta filpekaren till filens början. Om filen redan finns, misslyckas fopen() anropet och returnerar FALSE, och genererar ett E_WARNING-nivå felmeddelande. Om filen inte finns försöker den skapas.

detta är ekvivalent med att specificera O_EXCL|O_CREAT-markeringen till systemanropet open(2).

detta alternativ stöds av PHP 4.3.2 och senare versioner och kan endast användas för lokala filer.

"x+"

skapa och öppna i läge för läsning och skrivning, och placera filpekaren vid filens början. Om filen redan finns, misslyckas anropet till fopen() och returnerar FALSE, och en E_WARNING-nivås felmeddelande genereras. Om filen inte finns försöker den skapas.

detta är ekvivalent med att specificera O_EXCL|O_CREAT-markeringen till systemanropet open(2).

detta alternativ stöds av PHP 4.3.2 och senare versioner och kan endast användas för lokala filer.

betyder

fopen() kommer att filename specifierade namnresurs bindes till en ström. Om filename är "scheme://...om det är i formatet "" (komma), betraktas det som en URL, och PHP kommer att söka efter en protokollhanterare (också kallad innesluten protokoll) för att hantera detta mönster. Om protokollet inte är registrerat som en innesluten protokoll kommer PHP att ge ett meddelande för att hjälpa till att kontrollera potentiella problem i skriptet och att filename fortsätt att behandlas som en vanlig filnamn.

om PHP anser filename specificerar en lokal fil, kommer det att försöka öppna en ström på denna fil. Filen måste vara tillgänglig för PHP, och därför måste det bekräftas att filåtkomstbehörigheter tillåter detta. Om säkerhetsläget eller open_basedir är aktiverat kommer ytterligare begränsningar att tillämpas.

om PHP anser filename specificerar en registrerad protokoll, och denna protokoll är registrerad som en nätverks-URL, PHP kommer att kontrollera och bekräfta att allow_url_fopen är aktiverat. Om det är inaktiverat kommer PHP att ge ett varning, och anropet till fopen() kommer att misslyckas.

för context stöd tillkom med PHP 5.0.0.

Tips och kommentarer

Kommentar:Olika operativsystemfamiljer har olika radavslutningsvanor. När man skriver till en textfil och vill lägga till en ny rad, måste man använda radavslutningstecknet som är kompatibelt med operativsystemet. Unix-baserade system använder \n som radavslutningstecken, Windows-baserade system använder \r\n som radavslutningstecken, och Macintosh-baserade system använder \r som radavslutningstecken. Om felaktiga radavslutningstecken används vid skrivning till en fil, kan andra program visa sig konstiga när de öppnar dessa filer.

Windows erbjuder en textkonverteringsmarkering ("t") som transparentt konverterar \n till \r\n. motsvarande kan "b" användas för att tvinga binärmodus, vilket innebär att ingen konvertering av data sker. För att använda dessa markeringar måste antingen "b" eller "t" användas som den sista tecknet i mode-argumentet.

Standardkonverteringsmodellen beror på SAPI och den använda PHP-versionen, så för att underlätta portabilitet rekommenderas det att alltid specificera lämpliga markörer. Om du arbetar med ren textfil och använder \n som radavslutare i skriptet, men förväntar dig att dessa filer ska kunna läsas av andra program som Notepad, använd "t" i mode. Använd "b" i alla andra fall.

När du hanterar binära filer utan att specificera "b"-markören kan du möta några konstiga problem, inklusive trasiga bildfiler och konstiga problem med \r\n-tecken.

Kommentar:För kompatibilitetsändamål rekommenderas starkt att alltid använda "b"-markören när du öppnar filer med fopen().

Kommentar:Återigen, för kompatibilitetsändamål rekommenderas starkt att du omformulerar den kod som är beroende av "t"-modellen så att den använder korrekta radavslutare och ändrar till "b"-modellen.

实例

<?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");
?>