De functie fopen()

Basis fopen()
Met deze functie kun je een bestand openen. Als je er iets wilt uitlezen is dit dus handig, maar ook als je er wat in wilt schrijven moet je het bestand eerst openen.

Je kunt twee verschillende types bestanden openen. Interne, dus bestanden die bij jou op de server staan (bijv.: counter.dat) en je hebt externe bestanden (bijv.: http://www.extern.nl/bestand.txt).

In geval van interne bestanden moet je wel de juiste rechten hebben om het bestand te openen. Dit kun je doen via het CHMOD commando. Met dit commando kun je bepaalde rechten geven aan een bestand (lees de chmod tutorial hiervoor).

Als PHP heeft bepaald dat het een extern bestand is, gaat hij kijken of 'allow_url_fopen' op 1 staat. Dit moet aanstaan want anders krijg je een foutmelding van de functie fopen().

Over allow_url_fopen
Dit moet in de PHP configuratie aangezet worden. Voor windows gebruikers is dit de php.ini file, voor linux users de httpd.conf volgens mij.

Windows gebruikers van versie PHP 4.3.0 kunnen geen externe bestanden aan roepen met de functies: include(), include_once(), require(), require_once().

Open opties
Je kunt de volgende opties gebruiken om een bestand te openen.

'r' Openen voor alleen lezen; plaats de bestands pointer aan het begin van het bestand.
'r+' Openen voor lezen en schrijven; plaats de bestands pointer aan het begin van het bestand.
'w' Openen voor alleen schrijven; plaats de bestands pointer aan het begin van het bestand en maak het bestand 0 bytes lang. Als het bestand niet bestaat, probeer het aan te maken.
'w+' Openen voor lezen en schrijven; plaats de bestands pointer aan het begin van het bestand en maak het bestand 0 bytes lang. Als het bestand niet bestaat, probeer het aan te maken.
'a' Openen voor alleen schrijven; plaats de bestands pointer aan het einde van het bestand. Als het bestand niet bestaat, probeer het aan te maken
'a+' Openen voor lezen en schrijven; plaats het bestands pointer aan het einden van de file. Als het bestand niet bestaat, probeer het aan te maken.

Als je een bestand opent kun je het beste ook nog achter de mode de letter 'b' zetten. B staat voor binair. Ook bestaat de letter 't' voor tekst. Deze opties zijn omdat het standaard (dus b of t) afhankelijk is van je internet provider (waar je je site host). Om je script zo toegankelijk mogelijk te houden raad ik je aan altijd de letter b achter je script te zetten, voorbeeldje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
   $bestand
= "counter.dat";
   $file = fopen($bestand, wb);
?>


Het 'plaats het bestands pointer aan het einde of begin van de file' betekend dat wanneer je het bestand opent en je schrijft er iets in, dat het dan aan het begin of aan het einde van de file wordt geschreven.

Het 'maakt het bestand 0 bytes lang' betekend dat hij het bestand helemaal leeg haalt. En als het dus nie bestaat, probeert hij het bestand aan te maken. Duidelijk?

Enkele voorbeeldjes hoe het werkt.

Om een bestand te openen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
   // goed
   $bestand = "counter.dat";
   $file = fopen($bestand, "r");

   // goed
   $bestand = "c:/counter/counter.dat";
   $file = fopen($bestand, "r");

    // fout
   $bestand = "c:\counter\counter.dat";
   $file = fopen($bestand, "r");
  
    // goed
   $bestand = "c:\\counter\\counter.dat";
   $file = fopen($bestand, "r");
?>


Om een bestand te openen voor lezen en schrijven (dat is dus w+)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
   $bestand
= "counter.txt";
   // de 'b' is dus voor binair (kan dus ook 't' zijn voor tekst)
   $file = fopen($bestand, "w+b");
?>


Zie ook eens: fclose(), fgets(), file(), file_exists() en is_readable().

« Lees de omschrijving en reacties

Inhoudsopgave

  1. De functie fopen()

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.