Verzeichnis PHP funktioniert nicht richtig

wolle-

Mitglied
Hallo alle zusammen,

ich habe hier unser PHP Dateianzeige Script.
Dies zeigt ebenfalls die Ordner an die im Verzeichnis vorhanden sind.
In die Ordner kann ich jedoch nicht rein, da muss irgendwas falsch sein, ich kann den Fehler leider nicht finden, kann mir bitte jemand helfen?

Es ist super wichtig, dass ich mit diesem script in Unterordner navigieren kann.
Für mich steht überhauptgarnicht fest wieso es nicht funktioniert.
Hoffe wir kriegen das schnell hin :)

Vielen Dank!


PHP:
<?php
/*****************************************************************************\
 * Configuration (adapt this section to your needs)                          *
\*****************************************************************************/
$su            = false;
# paths
$rootDir       = 'formulare';
$indexDir      = 'Teiledienst';
$referer       = $_SERVER['PHP_SELF'];
$printCwd      = true;
# labels for tableheader
$hPic          = '&nbsp;';
$hName         = 'Name';
$hSize         = 'Groesse';
$hType         = 'Typ';
$hLastMod      = 'Letzte Aenderung';
# show attributes
$showPic       = true;
$showName      = true;    # must always be 'true'
$showSize      = true;
$showType      = false;
$showLastMod   = true;
# pic-names
$picUp         = '../gfx/folderup.gif';
$picFolder     = '../gfx/folder.gif';
$picFile       = '../gfx/file.gif';
# filter
$showFiles     = '*';
$hideFiles     = '.*,index*,*.php';
$showFolders   = '*';
$hideFolders   = '';
# mode
$xAction       = 0;
$xFilename     = 'dofile.php';

/*****************************************************************************\
 * prepare variables                                                         *
\*****************************************************************************/

// Check Path Formats ---------------------------------------------------------
$rootDir    = formatDir($rootDir,true,true);
$indexDir   = formatDir($indexDir);
$referer    = addLinker($referer);
// ----------------------------------------------------------------------------
// Handle (given) Directory ---------------------------------------------------
# initialize
$dir = $indexDir;

# make lokal variable from HTTP_GET_VARS
if(isset($_GET['dir']))
    $dir = formatDir(rawParam('dir'));
# check given directory if it is valid/allowed
if( !isValidDir("$rootDir$dir") )
    $dir = $indexDir;
# real path ($dir is just fake [relative to $rootDir] for display)
$ldir = formatDir("$rootDir$dir",true);
// ----------------------------------------------------------------------------
// Get Directory Content ------------------------------------------------------
$files = array();
$folders = array();
# unfiltered directory content
getDirContent( $ldir );
# filter (and sort) arrays
$files = filterArray( $files, $showFiles, $hideFiles );
$folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders );
// ----------------------------------------------------------------------------

/*****************************************************************************\
 * Output (print table)                                                      *
\*****************************************************************************/
echo '<table cellspacing="3" class="expl">',"\n";
// print current directory ----------------------------------------------------
if($printCwd)
{
    echo '  <tr class="path">',"\n";
    echo '    <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'"><em>/'.$dir.'</em></td>',"\n";
    echo '  </tr>',"\n";
 echo "<tr><td><div align=\"center\"><a href='formulare/Organisationshilfe/Start.htm'>ISO- und Organisationshilfe starten</a></td></tr>";
}
// ----------------------------------------------------------------------------
// draw tableheader -----------------------------------------------------------
echo '  <tr class="hExpl">',"\n";
if($showPic)
    echo '    <td class="hPic">&nbsp;'.$hPic.'&nbsp;</td>',"\n";
if($showName)
    echo '    <td class="hName">&nbsp;'.$hName.'&nbsp;</td>',"\n";
if($showSize)
    echo '    <td class="hSize">&nbsp;'.$hSize.'&nbsp;</td>',"\n";
if($showType)
    echo '    <td class="hType">&nbsp;'.$hType.'&nbsp;</td>',"\n";
if($showLastMod)
    echo '    <td class="hLastMod">&nbsp;'.$hLastMod.'&nbsp;</td>',"\n";
echo '  </tr>',"\n";
// ----------------------------------------------------------------------------
// handle up-button -----------------------------------------------------------
if( $su && (!$dir || (substr($dir,-2)=='..')) )
    $up = formatDir($dir,true).'..';
else
    $up = substr($dir,0,strrpos($dir,'/'));
if( $su || ($dir && ($up!==false)) )
{
    echo '  <tr class="folder">',"\n";
    if($showPic)
        echo '    <td class="pic"><a href="'.$referer.'dir='.$up.'"><img src="'.$picUp.'" alt="up" /></a></td>',"\n";
    if($showName)
        echo '    <td class="name"><a href="'.$referer.'dir='.$up.'"><em>..</em></a></td>',"\n";
    if($showSize)
        echo '    <td class="size">&nbsp;-&nbsp;</td>',"\n";
    if($showType)
        echo '    <td class="type">&nbsp;dir&nbsp;</td>',"\n";
    if($showLastMod)
        echo '    <td class="lastmod">&nbsp;-&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------
// print directories ----------------------------------------------------------
foreach ($folders as $folder)
{
      echo '  <tr class="folder">',"\n";
      if($showPic)
          echo '    <td class="pic"><a href="'.$referer.'dir='.formatDir($dir,true).$folder.'"><img src="'.$picFolder.'" alt="dir" /></a></td>',"\n";
      if($showName)
          echo '    <td class="name"><a href="'.$referer.'dir='.formatDir($dir,true).$folder.'"><em>'.$folder.'</em></a></td>',"\n";
      if($showSize)
          echo '    <td class="size">&nbsp;-&nbsp;</td>',"\n";
      if($showType)
          echo '    <td class="type">&nbsp;'.filetype("$ldir$folder").'&nbsp;</td>',"\n";
      if($showLastMod)
          echo '    <td class="lastmod">&nbsp;-&nbsp;</td>',"\n";
      echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------
// print files ----------------------------------------------------------------
foreach ($files as $file)
{
    $type = filetype("$ldir$file");         // get 'type of file'
    $modDate = filemtime("$ldir$file");     // get 'last modified date' of file
    $modDate = date('Y-m-d',$modDate);      // format date in ISO-Style
    $size = filesize("$ldir$file");         // get 'size of file' in bytes
    $size = ceil($size/1024);               // convert from byte to kilobyte
    $size = "$size kb";                     // add unit
    echo '  <tr class="file">',"\n";
    if($showPic)
        echo '    <td class="pic"><a href="'.makeLink("$ldir$file").'" target="_blank"><img src="'.$picFile.'" alt="file" /></a></td>',"\n";
    if($showName)
        echo '    <td class="name"><a href="'.makeLink("$ldir$file").'" target="_blank">'.$file.'</a></td>',"\n";
    if($showSize)
        echo '    <td class="size">&nbsp;'.$size.'&nbsp;</td>',"\n";
    if($showType)
        echo '    <td class="type">&nbsp;'.$type.'&nbsp;</td>',"\n";
    if($showLastMod)
        echo '    <td class="lastmod">&nbsp;'.$modDate.'&nbsp;</td>',"\n";
    echo '  </tr>',"\n";
}
// ----------------------------------------------------------------------------
echo '</table>',"\n";

/*****************************************************************************\
 * Functions                                                                 *
\*****************************************************************************/
// ----------------------------------------------------------------------------
// getDirContent() fills, filter and sort Arrays of files and folders
function getDirContent($dir)
{
    global $files, $folders;
    # fill arrays
    $handle = @opendir($dir);
    while( $file = readdir($handle) ) {
        if( is_dir("$dir/$file") )
            $folders[] = $file;
        elseif( is_file("$dir/$file") )
            $files[] = $file;
    }
    @closedir($handle);
}
// ----------------------------------------------------------------------------
// addLinker()    adds '?' or '&' to the referer
function addLinker($referer)
{
    // assume that last char is not '?' or '&'
    return strchr($referer,'?') ? "$referer&amp;" : "$referer?";
}
// ----------------------------------------------------------------------------
// formatDir()    skip trailing and leading "/" in given $dir-string
//                add
function formatDir($dir, $trailing=false, $leading=false)
{
    $dir = trim($dir,' /');
    if( $trailing && $dir )
        $dir = "$dir/";
    if( $leading ) #&& ($dir[0]!='/') )
        $dir = "./$dir";
    return $dir;
}
// ----------------------------------------------------------------------------
// filterArray()   make regular expression from $filter-string
function filterArray( $array, $allow, $hide )
{
    $allow = makeRegex($allow);
    $hide  = makeRegex($hide);
    $tmp = array();
    foreach( $array as $val )
        if( ereg($allow,$val) && !ereg($hide,$val) )
            $tmp[] = $val;
    natcasesort( $tmp );
    return $tmp;
}
// ----------------------------------------------------------------------------
// makeRegex()   make regular expression from $filter-string
function makeRegex( $filter )
{
    $regex = str_replace('.', '\.', $filter);
    $regex = str_replace('*', '.+', $regex);
    $regex = str_replace(',', '$|^', $regex);
    return "^$regex$";
}
// ----------------------------------------------------------------------------
// isValidDir()   return true if directory is valid/allowed
function isValidDir($dir)
{
    global $su;
    $strErr  = "<p>Requested Directory Not Found</p>\n";
    $strErr .= "\n</body>\n</html>";    #close open tags
    // check if folder exists (when manipulated manually)
    is_dir($dir) or die($strErr);
    // prevent cd with relative path '../'
    return $su ? true : !(strpos($dir,'..')!==false);
}
// ----------------------------------------------------------------------------
// rawParam()
function rawParam( $param )
{
    return ini_get('magic_quotes_gpc') ? stripslashes($_GET[$param]) : $_GET[$param];
}
// ----------------------------------------------------------------------------
// makeLink()   return target of click
function makeLink( $target )
{
    global $xAction, $xFilename;
    return $xAction ? "$xFilename?file=$target" : $target;
}
?>
 
Hallo nochmal,

kann mir wirklich niemand helfen? Ich saß nunmehr schon 3 stunden davor und kann einfach nicht feststellen wieso ich keine Unterverzeichnisse aufrufen kann.

Ich wäre wirklich um jede hilfe dankbar!

Grüße wolle :rolleyes:
 
Vielleicht gibts da irgend ein Rechteproblem!

Übrigens wird pushen nicht so gern gesehen! (Bin auch schon ein bis zwei mal ermahnt worden deswegen :D)

mfg nero
 
Hallo du,

ein Rechteproblem glaube ich eher nicht der ruft das verzeichnis garnicht auf und spring zur index.php zurück.

Ich finde dieses verflixten Fehler einfach nicht.

PS: sorry wollte nicht pushen oder wie du das nennst ;-)
:confused::confused:

Gruß Wolle
 
Hmm...
Versuchen wir dem Ganzen auf den Grund zu gehen:

Fehlermeldungen bekommst du keine oder?
Könntest du mir eventuell deinen Ordneraufbau (Ordnerbaum) beschreiben?
Gibt es vielleicht ein Online-Beispiel für das Script, dass ich mir das mal in Aktion anschauen könnte?

Der Code sieht eigentlich Fehlerfrei aus! Hast du den selber get? Wenn nicht könnte ich mir Vorstellen, dass du bei den Variablen für die Einstellungen den Hund drin hast!

mfg
Nero
 
Habs mir schon fast gedacht!

Das Problem liegt hier:

PHP:
# paths
$rootDir       = 'formulare';
$indexDir      = 'Teiledienst';

$indexDir gibt es nicht.

Und das $rootDir ist möglicherweise auch nicht richtig befüllt!

Gib mal bei den beiden Variablen die gesamten Pfade an! Nicht nur die Ordnernamen! Oder hast du diesen bereich noch gar nicht geändert?
 
auf unserem Intranetserver funktionieren diese beiden Variablen aber. Also wenn ich den ganzen Pfad angebe ändert sich nichts.

So siehts aus:
Gebe ich auf unserem Intranetserver oben formular und unten Teiledienst ein so geht er so vor:

/var/www/ !

/var/www/content/testfile.php

holt hier:
/var/www/formulare den ordner Formulare

und in diesem Ordner:

/var/www/formulare/Teiledienst

und listet mir diesen Inhalt auf. DIESER Inhalt wird mir ja auch angezeigt

Ich sehe den INHALT des Ordners Teiledienst und dessen Unterordner nur kann ich nicht in die Unterordner springen.

Gruß Wolle
 
Hallo Zusammen!

Also folgendes: Wenn ich das Script auf meinem Server ausführe geht es. :-)
Ich bin dafür, dass Du nochmal wegen den Verzeichnisnamen schaust. ^^
Tip: Benutze mal die Variable $_SERVER['document_root']; :)
 
Code:
Also folgendes: Wenn ich das Script auf meinem Server ausführe geht es. :-)
Ich bin dafür, dass Du nochmal wegen den Verzeichnisnamen schaust. :-) 
Tip: Benutze mal die Variable $_SERVER['document_root']; :)

Hallo, ich hoffe du verstehst mich.

Lade das script auf deinen Server hoch -> Es funktioniert.

Erstelle dir bitte Unterordner in dem angezeigten Ordner und versuche hinein zugehen.
Genau da liegt mein Problem!

DAS funktioniert nicht. Dateien aus dem angegebenen Ordner kann ich mir ansehen!

Grüße wolle
 
Zurück