Hey,

Ik zit met een probleempje met mijn script.
Ik maak gebruik van de functie opendir.

Deze functie word aangeroepen in een bestand dat in een subfolder staat.

Bijv: www.website.nl/test/bestand.php

Bestanden uitlezen in de map test is geen enkel probleem.
Alleen blijf ik steken in de test folder, ik wil uitkomen in de absolute root van de server dus waar de map test ook in staat.

Ik heb ../ en ../../ en $_SEVER['DOCUMENT_ROOT'] geprobeerd en nog een aantal maar hoger dan de test folder kom ik niet.

Bij voorbaat dank
Wat is de document root van het bestand?
En wat voor error krijg je?
Geen eigenlijk, als ik de document root echo geeft hij deze locatie aan:
public_html/

maar hij pakt de bestanden uit de subfolder.



<?php
$root = $_SERVER['DOCUMENT_ROOT'];

echo $root. "<br/>";

if ($handle = opendir($root)) {

//rest van code
?>


Heb je dit boven je code staan?
error_reporting(E_ALL);
ini_set('display_errors',1);
$root als waarde van $_SERVER['DOCUMENT_ROOT'] gaat niet lukken want dan probeert het script public_html te openen onder test dus test/public_html/
../ zou moeten werken, dat is de enige juist oplossing en met ../ vanuit test open je iets in je DOCUMENT_ROOT. Welke foutmelding krijg je?
Probeer eens een directory listing:

<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
if ($handle = opendir('../')) {
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }
    closedir($handle);
}
?>

../ doet hetzelfde :(
@Jasper, had je de code die ik gaf er boven staan?

@John waarom zet je de variabele tussen accolades? Maak er gewoon echo $file.PHP_EOL; van.
Ik zal mijn code eens posten, is eerste keer dat ik met opendir aan de gang ga normaal gesproken maak ik gewoon met msqli verbinding met mijn database.

Voorbeeldje indeling server:

-in de public_html-
-map test
- index.php
- sb_home.html
- sb_lestijden.html

-in de map test-
- bestand.php

Vanuit het bestand bestand.php wil ik dus de bestanden sb_lestijden.html en sb_home.html uitlezen.

In mijn code haal ik door middel van een strlen de eerste 2 letters op, zo krijg ik alles beginnend met de letter sb te voorschijn. Vervolgens gebruik ik een glob om de extentie op te vragen zodat ik alleen de .html bestanden terug krijg en geen mappen of php file die beginnen met sb.

Vervolgens remove ik de sb_ en de extentie voor het echo'en.

Alles werkt goed behalven het terecht komen in de root.
En ik krijg geen errors, ik heb het gestest op mijn wampserver en op mijn webserver.


<?php
error_reporting(E_ALL);
ini_set('display_errors',1);

$root = "../";

echo $root. "<br/>";
echo "<table width='400' border='0'>";
echo "  <tr>";
echo "    <td width='16'>&nbsp;</td>";
echo "    <td width='160'><strong>Name</strong></td>";
echo "    <td width='194'><strong>Last Modified</strong></td>";
echo "  </tr>";
if ($handle = opendir($root)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
			
			$sub = substr($file, 0, 2); //get fist to characters
			if($sub == "sb"){ //if equal to sb go to next step
			$end_html = glob("" . "" . "*.html"); //get all files with the extention html
			}
        }
    }
foreach($end_html as $end_file){ //echo all files 
$end_file = substr($end_file ,3);
$end_file = str_replace(".html", "", $end_file);
echo "  <tr>";
echo "    <td colspan='2' valign='bottom'><a href='edit_page.php?name=".$end_file."' class='file'><img src='images/page_white_edit.png' class='fileimg' /> ".$end_file. "</a></td>";
echo "    <td valign='bottom'>".date ("d-m-Y H:i:s", filemtime("sb_".$end_file.".html"))."</td>";
echo "  </tr>";
}
    closedir($handle);
	echo "</table>";
}
?>
Je hebt niet goed getest, je script geeft meerdere errors:
Notice: Undefined variable: end_html in /var/www/website9/test/fl.php
Warning: Invalid argument supplied for foreach() in /var/www/website9/test/fl.php
Ik kom op de website van de telegraaf als ik op de link klik.
Foutje?
John D op 23/02/2011 13:28:07

Je hebt niet goed getest, je script geeft meerdere errors:
Notice: Undefined variable: end_html in /var/www/website9/test/fl.php
Warning: Invalid argument supplied for foreach() in /var/www/website9/test/fl.php



Op 2 servers geen fout gezien op localhost gaat t ook goed en errors staan aan zoals je ziet.



[size=xsmall]Toevoeging op 23/02/2011 21:25:26:[/size]

Weer een tijdje mee gestoeid maar nog niet uitgekomen :(

[size=xsmall]Toevoeging op 24/02/2011 12:53:33:[/size]

Anyone?

[size=xsmall]Toevoeging op 24/02/2011 12:54:02:[/size]

Victor Php op 23/02/2011 13:29:37

Ik kom op de website van de telegraaf als ik op de link klik.
Foutje?


Telegraaf?

Reageren