Opendir Server Root
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
En wat voor error krijg je?
public_html/
maar hij pakt de bestanden uit de subfolder.
error_reporting(E_ALL);
ini_set('display_errors',1);
../ 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:
Code (php)
Gewijzigd op 23/02/2011 10:25:41 door John D
../ doet hetzelfde :(
@John waarom zet je de variabele tussen accolades? Maak er gewoon echo $file.PHP_EOL; van.
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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'> </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>";
}
?>
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'> </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>";
}
?>
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
Foutje?
Gewijzigd op 23/02/2011 13:31:04 door Victor Php
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
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.
Toevoeging op 23/02/2011 21:25:26:
Weer een tijdje mee gestoeid maar nog niet uitgekomen :(
Toevoeging op 24/02/2011 12:53:33:
Anyone?
Toevoeging op 24/02/2011 12:54:02:
Victor Php op 23/02/2011 13:29:37:
Ik kom op de website van de telegraaf als ik op de link klik.
Foutje?
Foutje?
Telegraaf?
Gewijzigd op 23/02/2011 21:25:50 door Jasper -