PHP fopen() -funktio

Määrittely ja käyttö

fopen() -funktio avaa tiedoston tai URL:n.

Jos avaus epäonnistuu, tämä funktio palauttaa FALSE.

Syntaksi

fopen(tiedostonimi,mode,include_path,konteksti)
Parametrit Kuvaus
tiedostonimi Välttämätön. Määrittää avattavan tiedoston tai URL:n.
mode Välttämätön. Määrittää vaaditun tiedoston tai virran pääsyn tyyppin. Mahdolliset arvot näkyvät taulukossa.
include_path Valinnainen. Jos myös haluat etsiä tiedostoja include_path -polusta, voit asettaa parametrin 1:ksi tai TRUE:ksi.
konteksti Valinnainen. Määrittää tiedoston viittymän ympäristön. Konteksti on joukko valintoja, jotka voivat muuttaa virran käyttäytymistä.

mode-parametrin mahdolliset arvot

mode kuvaus
"r" Avaa tiedoston vain lukuasemassa, siirrä tiedoston osoitin tiedoston alkuun.
"r+" Avaa tiedoston luku- ja kirjoitustilassa, siirrä tiedoston osoitin tiedoston alkuun.
"w" Avaa tiedoston kirjoitustilassa, siirrä tiedoston osoitin tiedoston alkuun ja leikkaa tiedoston koko nollaan. Jos tiedosto ei ole olemassa, yritetään luoda sitä.
"w+" Avaa tiedoston luku- ja kirjoitustilassa, siirrä tiedoston osoitin tiedoston alkuun ja leikkaa tiedoston koko nollaan. Jos tiedosto ei ole olemassa, yritetään luoda sitä.
"a" Avaa tiedoston kirjoitustilassa, siirrä tiedoston osoitin tiedoston loppuun. Jos tiedosto ei ole olemassa, yritetään luoda sitä.
"a+" Avaa tiedoston luku- ja kirjoitustilassa, siirrä tiedoston osoitin tiedoston loppuun. Jos tiedosto ei ole olemassa, yritetään luoda sitä.
"x"

Avaa ja luo tiedosto kirjoitustilassa, siirrä tiedoston osoitin tiedoston alkuun. Jos tiedosto on jo olemassa, fopen() -kutsu epäonnistuu ja palauttaa FALSE, ja luodaan varoitus E_WARNING -tason virhe. Jos tiedosto ei ole olemassa, yritetään luoda sitä.

Tämä on yhtä kuin määrittää alustavalle open(2) järjestelmäkutsulle O_EXCL|O_CREAT -merkinnät.

tämä vaihtoehto tukee PHP 4.3.2 ja uudempia versioita ja voidaan käyttää vain paikallisille tiedostoille.

"x+"

luodaan ja avataan lukemiseen ja kirjoittamiseen, ja tiedostopikseli asetetaan tiedoston alkuun. Jos tiedosto on jo olemassa, fopen() -kutsu epäonnistuu ja palauttaa FALSE, ja generoi E_WARNING -tason virheilmoituksen. Jos tiedosto ei ole olemassa, sitä yritetään luoda.

Tämä on yhtä kuin määrittää alustavalle open(2) järjestelmäkutsulle O_EXCL|O_CREAT -merkinnät.

tämä vaihtoehto tukee PHP 4.3.2 ja uudempia versioita ja voidaan käyttää vain paikallisille tiedostoille.

kuvaus

fopen() tiedostonimi määrittämä nimellinen resurssi sidotaan virtaan. Jos tiedostonimi on "scheme://..."-muodossa, sitä käsitellään URL:na, ja PHP etsii protokollakäsittelijää (tunnetaan myös sulautetuna protokollana) käsittelemään tätä muotoa. Jos protokolla ei ole rekisteröity sulautetuna protokollana, PHP lähettää viestin auttamaan tarkistamaan skriptin mahdolliset ongelmat ja lähettää tiedostonimi jatkaa normaalina tiedostonimena.

jos PHP katsoo tiedostonimi määrittää on paikallinen tiedosto, yritetään avata virta tiedostoon. Tiedosto täytyy olla PHP:n ulottuvilla, joten on varmistettava, että tiedoston käyttöoikeudet sallivat tämän. Jos on aktivointiä turvallisuustilassa tai open_basedir, sovelletaan lisärajoituksia.

jos PHP katsoo tiedostonimi määrittää on rekisteröity protokolla, joka on rekisteröity verkkosivustona URL:na, ja PHP tarkistaa ja varmistaa, että allow_url_fopen on aktiivinen. Jos se on suljettu, PHP lähettää varoituksen ja fopen-kutsu epäonnistuu.

saa konteksti tuki lisättiin PHP 5.0.0 versiossa.

Havainnot ja kommentit

Huomautus:Eri operatiivisten järjestelmien perheillä on erilaiset rivinvaihtotottumukset. Kun kirjoitetaan tekstitiedostoa ja halutaan lisätä uusi rivi, käytettävä on järjestelmän mukainen rivinvaihtosinnetti. Unix-pohjaiset järjestelmät käyttävät \n:ää rivinvaihtosinnettä, Windows-pohjaiset järjestelmät käyttävät \r\n:ää ja Macintosh-pohjaiset järjestelmät käyttävät \r:ää. Jos tiedoston kirjoittamisessa käytetään väärää rivinvaihtosinnettä, muut ohjelmat saattavat avata nämä tiedostot omituisesti.

Windows tarjoaa tekstitiedoston muunnosmerkin ("t") joka muuntaa \n:ää \r\n:ksi läpinäkyvästi. Tätä vastaavaa voidaan käyttää "b":n avulla pakottamaan binäärimuotoilua, jolloin tiedot eivät muutu. Näiden merkkien käyttö edellyttää joko "b":n tai "t":n käyttöä mode-parametrin viimeisenä merkkinä.

Oletusarvoinen muuntomalli riippuu SAPI:sta ja käytetystä PHP-versiosta, joten suositellaan aina määrittämään sopiva merkki helpottaakseen siirrettävyyttä. Jos käsitellään puhtaita tekstitiedostoja ja käytetään \n-rivinvaihtomerkkiä skriptissä, mutta odotetaan, että nämä tiedostot voidaan lukea muilla sovelluksilla, kuten Notepadilla, käytä mode-avainsanaa "t". Kaikissa muissa tapauksissa käytä "b".

Binaaritiedostojen käsittelyssä ilman "b"-merkkiä voi ilmetä omituisia ongelmia, mukaan lukien rikkoutuneet kuvatiedostot ja omituiset ongelmat \r\n-merkkijonon suhteen.

Huomautus:Suositellaan vahvasti aina käyttämään "b"-merkkiä fopen()-funktiota avattaessa tiedosto.

Huomautus:Toistuvasti, suositellaan vahvasti uudelleenkirjoittamaan ne koodit, jotka ovat riippuvaisia "t"-mallista, jotta ne käyttävät oikeaa rivinvaihtomerkkiä ja muutetaan "b"-malliksi.

Esimerkki

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