Hi,

in een ver verleden heb ik een code gevonden /gekregen om te kijken of een bestand bestond; Dit via fopen
fopen vind mijn bestanden via de nas niet meer. file_exists en include wel. $pagina beat dus de juiste naam.

De vraag is nu waarom?

Natuurlijk heb ik de @ al eens weg gedaan maar ik kreeg geen foutmelding.


if(file_exists($pagina)){
//if ($fp = @fopen($pagina, 'r+')){
	fclose($fp);
	include ($pagina);
}else{
	echo '<h1>Fout: Pagina <u>'. $pagina .'</u> werd niet gevonden</h1>';
}

}
Als file_exists() én include de bestanden wel vinden maar fopen() ze niet mag openen, betekent dit waarschijnlijk dat je voldoende leesrechten hebt maar te weinig andere rechten.

Je kunt overigens beter is_file() in plaats van file_exists() gebruiken om te controleren of iets echt een bestand is.
Daarbij nog: je zou nu nog steeds een melding moeten krijgen over het mislukken van fclose. Je error reporting en/of display_errors zijn dus niet uitgebreid genoeg om foutmeldingen te tonen.
je zet nu "r+" als 2e parameter

'r+' Open for reading and writing; place the file pointer at the beginning of the file.

Je probeert hier dus uit, of je de file kunt lezen EN schrijven.

Dat is meer dan nodig is om veilig een include() te doen.
Los van uitgedeelde rechten, zou dit ook misgaan als 2 gebruikers gelijktijdig deze check doen.

is_file() is natuurlijk een betere controlen, evt uitgebreid met de controle of de file ook leesbaar en niet leeg is (als je heeel zeker wilt gaan)
Bedankt voor de antwoorden.
Ik vermoed dat de + het probleem gaf.

Ik ga zeker verder werken met is_file

Jan
Indien je je code in classes organiseert en een autoloader gebruikt zou je voor het controleren op het bestaan van een bestand zelfs class_exists() kunnen gebruiken.

Uiteraard hangt dit wel af van je toepassing of dit voor jou gaat werken.

Reageren