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:
- Ägaren (owner)
- Gruppen (group)
- 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 23.08.2012 02:08:10
- Ändrad 23.08.2012 02:08:10
- Senast använd 23.08.2012 02:08:10
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 D:\enges.org\phpkurs\index.php katalogen ./inc heter D:\enges.org\phpkurs\inc Resultat av listning 1.14.2.6
|