Ik zit met een klein probleempje wat betreft de opendir() functie. Op mijn host is een gedeelte als volgt ingedeeld:

+ /public_html/ (de root)
+ /images/
- 1.jpg
- 2.jpg
- 3.jpg
+ /test/
- test.php
- index.php


De volgende code heb ik dan om bestanden uit een map te halen;

<?
$handle = opendir($dir);
$output = array();
while (($file = readdir($handle))!==false) {
if(is_file($file)){
if($file != "." && $file != ".."){
array_push($output, $file);
}
}
}

// Sorteer descending
array_multisort($output, SORT_DESC, SORT_STRING);

// Laat volledige array zien
print_r($output);

$bestand = explode('.',$output[0]);
$fnr = $bestand[0];

// Laat bestand zien (zonder .jpg, .php, etc) met hoogste cijfer
echo $fnr;
?>

Voor de code begint.. bij: $dir = './images'; in index.php werkt alles perfect. Dan laat het '3' zien bij $fnr, maar zodra ik bestanden uit een bovenliggende map wil halen ( $dir = '../images'; bij test.php), dan is de array helemaal leeg en krijg ik als resultaat bij $fnr helemaal niks. Hoe is dit op te lossen zodat ik ook bestanden uit bovenliggende map te zien krijg? Ik hoop dat m'n probleem duidelijk is en dat iemand mij kan helpen, want ikzelf kom er wat dit betreft niet uit.
$handle = opendir($dir);

Als opendir niet lukt (vanwege permissies bv) geeft hij false terug. Dat zou je kunnen checken. Verder gek probleem want volgens mij is . de huidige dir en .. de hogere. Je zou dus verwachten dat './images' zoekt naar een map 'images' in dezelfde dir als test.php
Als ik $dir = './images'; aangeef, dan is er ook totaal geen probleem. Dan geeft het gewoon het volgende weer bij print_r($output); :
Array ( [0] => 3.jpg [1] => 2.jpg [2] => 1.jpg )

Zo hoort het dus ook.. Maar zodra ik $dir = '../images'; aangeef, dan geeft het false terug inderdaad (zonder enige foutmelding ook). Maar enige idee wat ik daar dan aan kan doen?
Weet je zeker dat je code in de map 'test' uitgevoerd wordt?
100% zeker, anders had het wel een foutmelding moeten weergeven dat de dir niet bestaat.

test/test.php bevat: $dir = '../images'; <-- werkt niet
index.php bevat: $dir = './images'; <-- werkt
Probeer eens met een extra slash?

test.php: $dir = '../images/'
Noppes..

Het werkt ook niet met path op te geven (/home/admin/domains/website/public_html....), lukt niet met './../images'..
Ik vraag me eigenlijk af of 't uberhaupt wel mogelijk is met opendir()...

Reageren