PHP code virker ikke efter skift til IIS 7 Web server
Hej herinde, håber nogen kan komme med et klogt bud på hvad der går galt.Jeg har længe brugt et stykke php code der lister et directory i en web browser. Ydermere kan man navigere længere ind i directory hvis der findes undermapper. Det virker skide godt på one.com's webserver (ved ikke hvad de bruger) men når jeg kører skidtet på min egen IIS 7 på en server 2008 får jeg en kedelig oplevelse.
Jeg kan kun få koden til at virke hvis jeg ikke angiver 'dir' i koden, så kommer roden hvor index.php, som indeholder koden, ligger. Men hvis jeg vil navigere til en undermappe får jeg en fejl som er skrevet ind i koden. Det ser ud til at den ikke kan læse parent directory, men hvorfor kan den ikke det ??
<?php
# Name of this script (to be left out of directory listing)
$THIS_SCRIPT = getenv("SCRIPT_NAME");
# Read path argument, if blank set to "."
#$dir=$_GET['dir'];
# if ($dir=="" || $dir==false) {
# $dir="files";
# }
$dir = ( isset($_GET['dir']) ) ? $_GET['dir'] : "";
# Determine absolute path (include trailing / if not blank)
$absdir = realpath($dir);
if ($absdir != "") {
$absdir .= "/";
}
# Directory where script lives (include trailing / if not blank)
$scriptdir = getcwd();
if ($scriptdir != "") {
$scriptdir .= "/";
}
# Insure that absolute dir is under the current directory
# This prevents users from submitting a dir argument
# that reaches outside the directory where this script resides.
$pos = strpos($absdir,$scriptdir);
if ($pos !== 0) {
echo "<b>ERROR</b>: An invalid directory (<b>$dir</b>) was entered.";
exit();
}
# Get clean reldir (need for file and directory URLs)
$reldir = substr($absdir,strlen($scriptdir));
# Refresh PHP's (OS's ?) file and directory list cache
clearstatcache();
# Read directories and files in current directory
$handle = opendir($absdir);
while (false !== ($filename = readdir($handle)))
{
# Add directory to list
if (is_dir($absdir."/".$filename)==true && $filename!=".") { $dirs[] = $filename; }
# Add file to list (omit this script)
if (is_dir($absdir."/".$filename)==false && $filename!=$THIS_SCRIPT) {
if ($SHOW_DOT || substr($filename,0,1)!=".") {
$files[] = $filename;
}
}
}
# Get parent directory unless current directory
# is the same as the directory of this script.
$at_topdir = $absdir==$scriptdir;
if (! $at_topdir) {
$absparentdir="";
$subdirs=explode("/",$absdir);
for($x=1;$x<=count($subdirs)-3;$x++) {
$absparentdir.="/".$subdirs[$x];
}
}
# Get relative parent directory
$relparentdir = substr($absparentdir,strlen($scriptdir));
# Sort file and directory list
if ($files) { sort($files); }
if ($dirs) { sort($dirs); }
# Show current directory
if ($reldir=="") {
$showdir = ".";
} else {
$showdir = $reldir;
}
echo "<i>Nuværende Mappe</i>: <b>$showdir</b><br/><br/>\n";
# Start display table
echo "<table border='0'><tr valign='top'>\n";
# List parent directory if present
echo "<td align='left' width='150'>\n";
if ($at_topdir) {
echo " \n";
} else {
echo "<a href=\"$THIS_SCRIPT?dir=$relparentdir\"><img src=\"http://corporatesupport.dk/upload/images/folderBack.png\"> Forrige Mappe</a>\n";
}
echo "</td>\n";
# List directories if present
echo "<td align='left' width='300'>\n";
if ($dirs) {
foreach($dirs as $name) {
# List child directory
if ($name!="..") {
echo "<a href=\"$THIS_SCRIPT?dir=$reldir$name\"><img src=\"http://corporatesupport.dk/upload/images/folder.png\"> $name</a><br/>\n";
}
}
} else {
print " \n";
}
echo "</td>\n";
# List files if present
echo "<td align='left' width='300'>\n";
if ($files) {
foreach($files as $name) {
# Form relative path to file by removing leading /.
echo "<a href=\"$reldir$name\"><img src=\"http://corporatesupport.dk/upload/images/filesmall.png\"> $name</a><br/>\n";
}
} else {
print " \n";
}
echo "</td>\n";
# Finish table
echo "</tr></table>\n";
?>