några sidor på nätet om PHP programmering

Sök efter  
Börja här Uppgifter Testa dig själv Tips Sidokarta mm. Länkar Sök

Kataloger Filer Filmanipulation Läsning Skrivning HTML

1.14.2 Filer

Jag tar inte upp allt om filer. Vissa funktioner, t.ex sybolic link hanteringen i Linux, är av mer marginell betydelse. Se mer i filesystem *

 

chmod och fileperms

Ändra och kontrollera rättigheterna för en fil. Har marginell betydelse i Windows. chmod använder sig av Unix systemet för rättigheterna:

Det finns tre grupper:

  1. Ägaren (owner)
  2. Gruppen (group)
  3. Alla övriga (world)

För dessa kan man ange följande rättigheter:

Mode Betydelse
0 Ingen åtkomst
1 Execute (kör program)
2 Write (skrivrättigheter)
4 Read (Läsrättigheter)

Dessa kombineras sedan ihop så att t.ex. 750 betyder att ägaren har fulla rättigheter (4+2+1), gruppen har läs och execute rättigheter (4+1) och alla andra har inga (0) rättigheter. Har du tillgång till en Linux maskin: skriv man chmod för mer information.

<?php
    
# i windows verkar endast 0444 och 0666 att
    # fungera...

    # visa nuvarande rättigheter
    # skall visas som oktalt
    # eftersom fileperms ger ett 6-siffrigt nummer
    # så filtrerar jag bort allt annat än de tre sista
    
echo decoct( fileperms ( "data.txt" ) & 0777 ) . "<br />";
    
    
# ändra rättigheterna till read

    
chmod( "data.txt" ,0444 );

    
# visa nuvarande rättigheter
    
echo decoct( fileperms ( "data.txt" ) & 0777 ). "<br />";;

    
# ändra rättigheterna till read + write

    
chmod( "data.txt" ,0666 );

    
# visa nuvarande rättigheter
    
echo decoct( fileperms ( "data.txt" ) & 0777 ). "<br />";;
?>
Listning 1.14.2.1 - samples/s126.php

666
666
666
Resultat av listning 1.14.2.1

file_exists

Kontrollerara om en fil finns:

<?php
    
if ( file_exists( "data.txt" ) )
    {
        echo
"Filen data.txt existerar<br />";
    }
    else
    {
        echo
"Filen data.txt existerar <b>inte</b> <br />";
    }

    
# i osäkra fall - kombinera med realpath
    
if ( file_exists( realpath( "../phpkurs/inc/../data.txt" ) ) )
    {
        echo
"Filen data.txt existerar<br />";
    }
    else
    {
        echo
"Filen data.txt existerar <b>inte</b><br />";
    }

?>
Listning 1.14.2.2 - samples/s127.php

Filen data.txt existerar
Filen data.txt existerar
Resultat av listning 1.14.2.2

fileatime, filectime och filemtime

När har filen blivit använd, skapad och senast modifierad. Se exemplet:

<?php
    $filename
= "index.php";

    
# kolla de olika tiderna
    
$created = filectime( $filename );
    
$lastAccess = fileatime( $filename );
    
$lastModified = filemtime( $filename );

    
# visa dem i en <ul> lista
    
echo "Filen $filename blev:<ul>";
    echo
"<li>Skapad " . date( "d.m.Y h:i:s", $created ) ."</li>";
    echo
"<li>Ändrad " . date( "d.m.Y h:i:s", $lastModified ) ."</li>";
    echo
"<li>Senast använd " . date( "d.m.Y h:i:s", $lastAccess ) ."</li>";
    echo
"</ul>";
?>
Listning 1.14.2.3 - samples/s128.php

Filen index.php blev:
  • Skapad 11.12.2012 01:54:29
  • Ändrad 23.08.2012 01:08:10
  • Senast använd 08.06.2018 11:42:54
Resultat av listning 1.14.2.3

filesize

Storleken på en fil:

<?php
    $filename
= "index.php";

    echo
"Filen $filename är <b>" . filesize( $filename ) ."</b> byte stor" ;

?>
Listning 1.14.2.4 - samples/s129.php

Filen index.php är 10631 byte stor
Resultat av listning 1.14.2.4

is_* funktioner

Används för olika typer av kontroll av filer och kataloger. Se exemplet nedan.

<?php
    
# error_reporting(0);
    # kontollera om det är en katalog
    
if ( is_dir( "pictures" ) )
        echo
"pictures är en katalog<br>\n";

    
# kontrollera om det är en fil
    
if ( is_file( "index.php" ) )
        echo
"index.php är en fil<br>\n";

    
# kontrollera om den är läsbar
    
if ( is_readable( "testa.txt" ) )
        echo
"testa.txt är läsbar fil<br>\n";

    
# kontrollera om den är skrivbar
    
if ( is_writeable( "testa.txt" ) )
        echo
"testa.txt är skrivbar<br>\n";

    
# kontrollera om det är ett program - FUNKAR INTE på WINDOWS
    #if ( is_executable( "index.php" ) )
    #    echo "index.php är ett program (executable)<br>\n";
?>
Listning 1.14.2.5 - samples/is_1.php

pictures är en katalog
index.php är en fil
testa.txt är läsbar fil
Resultat av listning 1.14.2.5

realpath

<?php

    
# en slingring path till en fil
    
$filename = "./inc/../../phpkurs/data/../index.php";
    echo
"Filen $filename heter <b>" . realpath( $filename ) ."</b><br />" ;
    
$dirname = "./inc";
    echo
"katalogen $dirname heter <b>" . realpath( $dirname ) ."</b>" ;

?>
Listning 1.14.2.6 - samples/s130.php

Filen ./inc/../../phpkurs/data/../index.php heter /home/vhome/enges.org/www/phpkurs/index.php
katalogen ./inc heter /home/vhome/enges.org/www/phpkurs/inc
Resultat av listning 1.14.2.6

   Börja härFilhanteringFiler