Opendir Server Root

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper -

Jasper -

23/02/2011 01:43:55
Quote Anchor link
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
 
PHP hulp

PHP hulp

16/09/2024 21:30:23
 
TJVB tvb

TJVB tvb

23/02/2011 09:52:11
Quote Anchor link
Wat is de document root van het bestand?
En wat voor error krijg je?
 
Jasper -

Jasper -

23/02/2011 10:03:45
Quote Anchor link
Geen eigenlijk, als ik de document root echo geeft hij deze locatie aan:
public_html/

maar hij pakt de bestanden uit de subfolder.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$root
= $_SERVER['DOCUMENT_ROOT'];

echo $root. "<br/>";

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

//rest van code
?>
 
TJVB tvb

TJVB tvb

23/02/2011 10:11:08
Quote Anchor link
Heb je dit boven je code staan?
error_reporting(E_ALL);
ini_set('display_errors',1);
 
John D

John D

23/02/2011 10:13:47
Quote Anchor link
$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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
if ($handle = opendir('../')) {
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

    closedir($handle);
}

?>
Gewijzigd op 23/02/2011 10:25:41 door John D
 
Jasper -

Jasper -

23/02/2011 12:10:13
Quote Anchor link
../ doet hetzelfde :(
 
TJVB tvb

TJVB tvb

23/02/2011 12:12:59
Quote Anchor link
@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.
 
Jasper -

Jasper -

23/02/2011 12:41:02
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
}

?>
 
John D

John D

23/02/2011 13:28:07
Quote Anchor link
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
 
Victor Php

Victor Php

23/02/2011 13:29:37
Quote Anchor link
Ik kom op de website van de telegraaf als ik op de link klik.
Foutje?
Gewijzigd op 23/02/2011 13:31:04 door Victor Php
 
Jasper -

Jasper -

23/02/2011 15:06:35
Quote Anchor link
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.



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?


Telegraaf?
Gewijzigd op 23/02/2011 21:25:50 door Jasper -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.