Image Galerie

B

BSK

Gast
Hallo!

Seitdem ich auf dem Server PHP5 (5.0.3) habe
funzt mein Galerie Script nicht mehr. Es zeigt
immer an dass das Verzeichnis leer wäre, obwohl
es das nicht ist und auch alle CHMODS richtig gesetzt
sind.

Kann mir da einer von euch helfen?
Ich habe die Datei mal hier:

PHP:
<?php
# ----------------------------------------------------------------------------
# Kai's Image-Galerie
# The really Flat-oneFileonly-Image-Gallery
# ----------------------------------------------------------------------------
# Version:     2.3.1
# Last Update: 20.12.2004 08:49
# Author:      Kai Horlbeck 
# Web:         http://www.horlbeck.info/projekte/222/
# ----------------------------------------------------------------------------
# Anleitung:
#
# Einfach diese Datei in ein Web-Verzeichnis mit Bildern kopieren. Es werden
# automatisch Thumbnails generiert, und diese in einem Unterverzeichnis
# abgelegt. Das Script sowie der Ordner in dem es liegt benötigen volle
# Schreibrechte (chmod 0755, evtl. 777), sonst kann das Script das 
# humbnail-Verzeichnis nicht anlegen.
#
# Dieses Script darf und soll im privaten Bereich frei benutzt werden.
# Ich bitte lediglich um eine kleine Info sowie einen freundlichen Vermerk
# auf meine Seite :) Übrigens:
# Vielen Dank an Gerrit van Aaken (http://praegnanz.de) fürs Standard-Design.
# ----------------------------------------------------------------------------

#
# Variablen:
#
# Der HTML-Titel (<title>) der Galerie. Hier kann jeder beliebige String
# eingegeben werden.
$config['page_title'] = "Medea's Servietten ...";

# Der Page-Titel (<h1>) der Galerie. Hier kann jeder beliebige String
# eingegeben werden. Standard ist der selbe Titel wie $config['page_title'],
# wer das ändern will, passt die Variable einfach nach dem Vorbild des
# Pagetitles an
$config['gallery_title'] = $config['page_title'];

# Anzahl der Thumbnails pro Seite, die ausgegeben werden sollen. Wenn mehr
# Bilder im Verzeichniss liegen, kann durch die entsprechenden Seiten
# geblättert werden.
# Standard: 20
$config['maxpics'] = 9;

# Soll in der Einzelbildansicht das Bild in der Größmanipulierbar sein? Wenn
# ja, kann die Bildgröße 10%-Schritten vergrößert und verkleinert werden.
# Möglichkeiten: 0=Nein, 1=Ja (Standard: 1)
$config['showresize'] = 1;

# Wie groß ist die Standardgröße der Bilder in der Einzelansicht, gemessen
# in Prozent ausgehend von der Bildgröße in Pixel
# Standard: '100'
$config['defaultresize'] = '100';

# Die Breite der neuen Thumbnails in Pixel.
# Standard: 96
$config['newthumb_w'] = 96;

# Die Höhe neuen Thumbnails in Pixel.
# Standard: 64
$config['newthumb_h'] = 64;

# Sollen die Bildnamen neben dem Thumbnail angezeigt werden? Die CSS-Angaben
# müssen hierfür evtl. angepasst werden, entsprechende Kommentare sind im
# CSS-Teil zu finden.
# Möglichkeiten: 0=Nein, 1=Ja (Standard: 1)
$config['shownames'] = 1;

# Soll die Dateigröße KB angezeigt werden?
# Möglichkeiten: 0=Nein, 1=Ja (Standard: 1)
$config['showfilesize'] = 0;

# Soll die Bildgröße Pixel angezeigt werden?
# Möglichkeiten: 0=Nein, 1=Ja (Standard: 1)
$config['showdimensions']  = 0;

# Sollen die Bilder durchnummeriert werden?
# Möglichkeiten: 0=Nein, 1=Ja (Standard: 1)
$config['shownumbers']        = 0;

# Der Dateinamen-Prefix für neu erstellten Thumbnails vor dem
# eigentlichen Dateinamen. Bitte die üblichen  Restriktionen für Dateinamen beachten!
# Standard: "TN_"
$config['thumb_prefix'] = "TN_";

# Der Unterordner (relativ zu dieser Datei), in dem die neu erstellten Thumbnails
# gespeichert werden. Bitte die üblichen Restriktionen für Dateinamen beachten!
# Standard: "/thumbs/"
$config['thumbs_relative'] = "/thumbs/";

# Sollte das Script nicht richtig funktionieren, kann hier Debug-Output unterhalb
# der Galerie ausgegeben werden, der einige Variablen der Umgebung abfragt und 
# ausgibt.
# Möglichkeiten: 0=Nein, 1=Ja (Standard: 0)
$config['debug']=0;

# !!! Diese Variablen bitte NICHT ändern !!!
 $config['picture_url']	    = "http://".$_SERVER["HTTP_HOST"]. dirname ($_SERVER[PHP_SELF]);
 $config['picture_path']    = dirname ($_SERVER["PATH_TRANSLATED"]);
 $config['thumb_path']	    = $config['picture_path'].$config['thumbs_relative'];	
 $config['thumb_url']	    = $config['picture_url'].$config['thumbs_relative'];
 $config['script_ver'] 	    = "2.3.1";

# ----------------------------------------------------------------------------
# PHP-Code
# ----------------------------------------------------------------------------

function print_css()
{
    # print_css() ist ein Wrapper, um das CSS zentral
    # zu editieren, und den Code der Datei noch
    # ?chtlich zu halten.
    
    global $config;
    
    $css='
    <!--    
    * {
        margin: 0;
        padding: 0;
    }
    
    body {
    	text-align: center;
	font: 16px tahoma, verdana, geneva, lucida, arial, helvetica, sans-serif;
	color:#F79446;
    }
    
    #wrapper {
        margin: 0 auto;
    }
    
    .abstand {
        margin-bottom: 25px;
    }
    
    h1 {
        font-weight: normal;
        font-size: 2.5em;
        margin: 0 0 0.2em 0;
        letter-spacing: 0.2em;
        text-shadow: 2px 3px 4px #bbb;
    }
    
    h2 {
        clear: both;
        font-size: 0.9em;
        font-weight: normal;
        padding: 30px 0 0 0;
    }
    
    h3 {
        font-size: 1em;
        font-weight: normal;
        margin: 0 0 25px 0;
    }
    
    li {
        display: inline;
        width: 50px;
        padding: 8px;
        margin: 15px 5px 5px 5px;
            border: #888 1px solid;
            list-style: none;
    }
    
    img {
        border: #888 1px solid;
        padding: 10px;
        margin: 28px 0;
    }
    
    li a {
        padding: 3px;
    }
    
    a:link, a:active {
	color: #625535;
text-decoration: none;
    }
    
    a:visited {
	color: #625535;
text-decoration: none;
    }
    
    a:hover {
	color: #B17E08;
text-decoration: none;
    }    
    
    hr {
        width: 100%;
        clear: both;
        border: none;
        border-bottom: 1px #999 solid;
        padding: 25px 0 0 0;
    }
    
    .thumb a {
        float: left;
    }
    
    .thumb img {
        margin: 5px 0 0 0;
    }
    
    .thumb ul {
        width: 55px;            /* Platz für Bild-Infos in der Übersicht */
        overflow: hidden;
        padding: 0 5px;
    }
    
    .thumb li {
        font: 0.7em verdana;
        margin: 3px 0 0 0;
        padding: 0;
        border: none;
        display: block;
    }
    
        .thumb a:link, .thumb a:active, .thumb a:hover {
        color: #888;
        text-decoration: none;
        border: none;
    }
    
    .thumb a:visited {
        color: #aaa;
        text-decoration: none;
    }
    
    .thumb a:hover img {
        border: 1px solid #c00;
        text-decoration: none;
    }
    
    .thumb {
        overflow: hidden;
        text-align: left;
        width: 220px;      /* Platz für Thumbnail und Infos: Breite */
        height: 150px;     /* Platz für Thumbnail und Infos: Höhe */
        float: left;
        margin: 10px 10px 0 0;
    }    
    -->
    ';
    return $css;
};
# ----------------------------------------------------------------------------
function open_dir($MyDir)
{
    # Liest das angegebene Verzeichniss aus und speichert die Dateinamen
    # in ein Array
    if ($dir = opendir ("$MyDir"))
    {
        while (($file = readdir ($dir)) != FALSE)
        {
            if (($file != ".") AND ($file != ".:"))
            {
                $ext = strtolower (substr ($file, -4));
                if (($ext==".jpg") || ($ext==".png"))
                {
                    $filenames[]=$file;
                } 
                elseif ($ext==".gif")
                {
                  # Kontrolliert, ob die installierte GD-Lib GIF unterstützt
        	  $gd = gd_info();
        	  if ($gd['GIF Create Support']===TRUE) 
        	  $filenames[]=$file;
        	}; 
        	  
            };
        };
    };
    return $filenames;
};
# ----------------------------------------------------------------------------
function show_image($MyPath, $MyPic, $MySize=100)
{
    # Generiert die Einzelansicht der Bilder beim klick auf ein
    # Thumbnails (inkl. des HTML und CSS)
    
    global $config;
    
    $kleiner = $MySize-10;
    $groesser = $MySize+10;
    $imageSize = GetImageSize ($MyPic);
    $breit = ($imageSize[0]/100)*$MySize; 
    $hoch  = ($imageSize[1]/100)*$MySize;
  
    $filenames = open_dir($MyPath);
  
    $match = array_search ($MyPic, $filenames);
    $last = count ($filenames);
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
      <title><?=$config['page_title'];?> - Bildansicht</title>
      <meta http-equiv="content-language" content="de" />
      <meta name="description" content="Kai's Image-Galerie // The really Flat-oneFileonly-Image-Gallery" />
      <style type="text/css">
      <?=print_css();?>
      </style>
    </head>
    <body bgcolor="#FCFAF1">
      <div id="wrapper">
        <h1 class="abstand"><?=$config['gallery_title'];?></h1>
        <ul>
          <?
            # Ausgabe der Navigation und der Manipulationselemente
            $nav  = ($match !=0) ? "<li><a href=\"".$_SERVER[PHP_SELF]."?showimage=".$filenames[$match-1]."&start=".$_GET['start']."\" title=\"zur&uuml;ck\">&lt;&lt;&lt;</a></li>" : "<li>&lt;&lt;&lt;</li>";
            $nav .= (($config['showresize']==1) && ($kleiner!=10)) ? "<li><a href=\"?showimage=$MyPic&size=$kleiner\" title=\"verkleinern\">-</a></li>" : "";
            $nav .= "<li><a href=\"$_SERVER[PHP_SELF]?start=".$_GET['start']."\"> &Uuml;bersicht</a></li>";
            $nav .= (($config['showresize']==1) && ($groesser!=110)) ? "<li><a href=\"?showimage=$MyPic&size=$groesser\" title=\"vergr&ouml;ssern\">+</a></li>" : "";
            $nav .= ($match!=$last-1) ? "<li><a href=\"".$_SERVER[PHP_SELF]."?showimage=".$filenames[$match+1]."&start=".$_GET['start']."\" title=\"weiter\">&gt;&gt;&gt;</a></li>" : "<li>&gt;&gt;&gt;</li>";
            echo $nav;
          ?>
        </ul>
        <img src="<?=$_SERVER[PHP_SELF];?>?type=full&file=<? echo $MyPath."/".$MyPic;?>&size=<?=$MySize;?>" alt="<?=$MyPic;?>" />
        <h2><a href="http://www.horlbeck.info/programming">Galerie-Script (version <?=$config['script_ver'];?>) © 2004 by Kai Horlbeck</a></h2>
      </div>
    </body>
    </html>
    <?
};
# -----------------------------------------------------------------------------
function CreateThumb($MyPicture, $MyProzent=0, $MyFile=NULL)
{
    # Erstellt das Thumbnail und speichert es als *.jpg ab. Dies spart beim
    # erneuten Seitenaufruf CPU-Last, da nicht wieder alle Bilder neu per
    # GD-Lib gezeichnet werden.
    
    global $config;
    
    $imageSize = GetImageSize ("$MyPicture");
    
    if ($MyProzent!=0)
    {
        # Größenskalierung, wenn Bildmanipulation erlaubt ist
        $newW = ($imageSize[0]/100)*$MyProzent;
        $newH = ($imageSize[1]/100)*$MyProzent;
    }
    else
    {
        # Auslesen ob das Bild ein im Hoch- oder Querformat vorliegt
        if ($imageSize[0]>$imageSize[1])
        {
            $newW = $config['newthumb_w'];
            $newH = $config['newthumb_h'];
        }
        else
        {
            $newW = $config['newthumb_h'];
            $newH = $config['newthumb_w'];
        };
    };
    
    # Abfrage des Dateityps. Seit Version 2.3.0 des Scriptes
    # wird neben Jpeg und PNG nun auch GIF unterstützt, sofern
    # die GD-Lib Write-Support hat.
    if ($imageSize[2] == "1")
    {
        # ein GIF
        if ($MyFile == '') header ("Content-type: image/gif");
        
        $im_orginal = ImageCreateFromGIF ($MyPicture);
        $im_thumb   = imagecreatetruecolor ($newW, $newH);
        ImageCopyResampled ($im_thumb, $im_orginal, 0,0, 0,0, $newW, $newH, $imageSize[0], $imageSize[1]);
        if ($MyFile===NULL)
        {
          ImageGIF ($im_thumb);
        }
        else
        {
          ImageGIF ($im_thumb,$MyFile);
        };
        ImageDestroy ($im_thumb);
        ImageDestroy ($im_orginal);
    }
    elseif ($imageSize[2] == "2")
    {
        # ein JPG
        if ($MyFile == '') header ("Content-type: image/jpeg");
        
        $im_orginal = ImageCreateFromJPEG ($MyPicture);
        $im_thumb   = imagecreatetruecolor ($newW, $newH);
        ImageCopyResampled ($im_thumb, $im_orginal, 0,0, 0,0, $newW, $newH, $imageSize[0], $imageSize[1]);
        ImageJPEG ($im_thumb,$MyFile,100);
        ImageDestroy ($im_thumb);
        ImageDestroy ($im_orginal);
    }
    elseif ($imageSize[2] == "3")
    {
        # ein PNG
        if ($MyFile == '') header ("Content-type: image/png");
        $im_orginal = ImageCreateFromPNG ($MyPicture);
        $im_thumb   = imagecreatetruecolor ($newW, $newH);
        ImageCopyResized ($im_thumb, $im_orginal, 0,0, 0,0, $newW, $newH, $imageSize[0], $imageSize[1]);
        ImagePNG ($im_thumb,$MyFile,100);
        ImageDestroy ($im_thumb);
        ImageDestroy ($im_orginal);
    }
    else
    {
        # kein unterstütztes Dateiformat, Fehlermeldung...
        die (show_debug ("Out of cheese error! Dateiformat muss JPG oder PNG sein..."));
    };
    
};
# -----------------------------------------------------------------------------
function show_debug ($msg=FALSE)
{
  # Diese Funktion gibt - sofern $config['debug']==1 - unter der Galerie
  # Debug-Output aus. Wenn das Script abbricht, erscheint ebenfalls dieser
  # Output, was allerdings nicht unterbunden werden kann
  
  global $config;
  ?>
  <div align="left" style="border: 1px solid black; background-color:#ED8B8A; padding:10px;color:black; font-family:Verdana; font-size: 10px;">
    <b>Debug-Output</b><br>
    <?
    if ($msg===FALSE)
    {
    	echo "(\$config['debug'] auf 0 setzen, um diese Meldung zu unterbinden)<br><br>";
    } else {
    	echo "<br><div style=\"border: 1px solid yellow;padding:5px;\"><b>Scriptunterbrechung - Fehler:</b><br>$msg</div><br><br>";
    };
    ?>
    <b>Umgebung:</b><br>
    Script Version: <?=$config['script_ver'];?> <br>
    PHP-Version: <?=phpversion();?><br>
    GD-Libary:
    <?
      $gd = gd_info();
      if ($gd !='') {
        echo "<br>&nbsp;&nbsp;&nbsp;&nbsp;Version ".$gd['GD Version']."<br>";
        echo "&nbsp;&nbsp;&nbsp;&nbsp;GIF Create Support = ".$gd['GIF Create Support']."<br>";
      }else{
      	echo "keine GD-Unterstützung<br>";
      };
    ?>
    PHP_Settings:<br>
    &nbsp;&nbsp;&nbsp;&nbsp;Speicher <?=ini_get('memory_limit');?><br>
    &nbsp;&nbsp;&nbsp;&nbsp;Safe-Mode <?=ini_get('safe_mode');?><br>
    Pfadangaben:<br>
    &nbsp;&nbsp;&nbsp;&nbsp;<?=$config['picture_url'];?> (Bild-URL)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;<?=$config['thumb_url'];?> (Thumb-URL)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;<?=$config['picture_path'];?> (absolut Bilder)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;<?=$config['thumb_path'];?> (absulut Thumbs)<br>
    <br><b>End Debug</b>
    </div>
  <?
};
# -----------------------------------------------------------------------------
# HTML-Output
# -----------------------------------------------------------------------------

#CheckExecuting();

# Galerie oder Einzelbild
switch ($_GET['type'])
{
    case 'thumb':
        CreateThumb ($_GET['file'], $_GET['size']);
        break;
    case 'full':
        CreateThumb ($_GET['file'], $_GET['size']);
        break;
};

# Bildmanipulationen
if (isset ($_GET[showimage]))
{
    if (isset ($_GET['size']))
    {
        show_image ($config['picture_path'], "$_GET[showimage]",$_GET[size]);
    }
    else
    {
        show_image ($config['picture_path'], "$_GET[showimage]", $config['defaultresize']);
    };
} 
else
{
  # Verzeichnis verarbeiten
  (!$_GET[start]) ? $start=1 : $start=$_GET[start];
  $filenames = open_dir($config['picture_path']);
  $numpics   = count($filenames);
  $pages = ceil (bcdiv ($numpics, $config[maxpics],5));
  $thispage  = $pages - bcdiv (($numpics)-$start,($config['maxpics']),0);
  $prevstart = $start-($config['maxpics']);
  $nextstart = $start+($config['maxpics']);
  
  # Abbruch-Konditionen
  if (!sizeof($filenames))
  {
      # Verzeichnis leer
      show_debug ("Fehler: Verzeichnis <i>".$config['picture_path']."</i> scheint leer zu sein.");
      exit();
  };
  
  # Erstelle Thumbnails und ggf. ein neues Verzeichnis
  if (!file_exists($config['thumb_path']))
  {
      # Setzen der umask auf 000 == chmod 777, 
      # damit die thumbs später per FTP gelöscht werden können, wenn PHP unter
      # einem anderen User als der Webserver/FTP läuft
      @umask (000);
      @mkdir ($config['thumb_path'])
          or die (show_debug("Kann das Thumbnail-Verzeichnis <i>".$config['thumbs_relative']."</i>
                   nicht anlegen. Evtl. chmod vergessen?"));
  };    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <title><?=$config['page_title'];?></title>
  <meta http-equiv="content-language" content="de" />
  <meta name="description" content="Kai's Image-Galerie // The really Flat-oneFileonly-Image-Gallery" />
  <style type="text/css">
  <?=print_css();?>
  </style>
</head>
<body bgcolor="#FCFAF1">
<h1><?=$config['gallery_title'];?></h1>
<h3>Seite <?=$thispage;?> von <?=$pages;?></h3>
<ul>
  <?
    # Übersichtsseiten durchblättern
    if ($thispage != 1) echo "<li><a href=\"$PHP_SELF?start=$prevstart\">&lt;&lt;&lt;</a></li>\n";
    if ($thispage != $pages)   echo "<li><a href=\"$PHP_SELF?start=$nextstart\">&gt;&gt;&gt;</a></li>\n";
  ?>
</ul>
<hr />
  <?
  $filenames2 = array_slice ($filenames, $start-1, $config['maxpics']);
  $i=0;
  $picnum = $start;
  foreach ($filenames2 as $value)
  {
      $imageSize = GetImageSize ($config['picture_path']."/".$value);
      
      # Existiert bereits ein Thumbnail? Wenn nicht, wird hier
      # ein neues erstellt
      if (!file_exists($config['thumb_path'].$config['thumb_prefix'].$value))
      {
          $name  = $config['thumb_path'].$config['thumb_prefix'].$value;
          CreateThumb ($value, 0, $name);
      };
      
      # Ausgabe der Thumbnails in der Bildansicht
      echo "
      <div class=\"thumb\">
        <a href=\"$_SERVER[PHP_SELF]?showimage=$value&start=$_GET[start]\">
          <img src=\"".$config['picture_url'].$config['thumbs_relative'].$config['thumb_prefix'].$value."\" border=\"1\" alt=\"$value\" />
        </a>
        ";
      # Ausgabe von Bildname, Filesize, Bildmaßen und Nummerierung
      if (($config['shownames']==1) || ($config['showfilesize']==1) || ($config['showdimensions']==1) || ($config['shownumbers']==1))
      {
          echo "<ul>\n";
          if ($config['shownames'])      echo "\t<li>$value</li>\n";
          if ($config['showfilesize'])   echo "\t<li>".round( filesize($value)/1024,2)."&nbsp;KB</li>\n";
          if ($config['showdimensions']) echo "\t<li>$imageSize[0]×$imageSize[1]</li>\n";
          if ($config['shownumbers'])       echo "\t<li>".$picnum."&nbsp;von&nbsp;".count($filenames)."</li>\n";
          echo "</ul>";          
      };
      echo "</div>";
      $i++;
      $picnum++;
  };
?>
<hr />
<h2><a href="http://www.horlbeck.info/programming">Galerie-Script (version <?=$config['script_ver'];?>) © 2004 by Kai Horlbeck</a></h2>
<?if ($config['debug']==1) show_debug(); ?>
</body>
</html>
<?
}; # Schliesse if/else (isset ($_GET[showimage]))
# -----------------------------------------------------------------------------
# EOF | Copyright 2004 by Kai Horlbeck
# -----------------------------------------------------------------------------
?>

Danke,
BSK
 
Zuletzt bearbeitet von einem Moderator: (<? zu <?php wegen Farbe)
Dann kommt

Parse error: parse error, unexpected T_VARIABLE in /www/htdocs/serviett/servietten/andere/index.php on line 98
 
Hmm. Lautet die Zeile nun exakt

$config['picture_path'] = dirname ($_SERVER["SCRIPT_FILENAME"]);

?

Die Meldung taucht u.a. auf, wenn ein Hochkomma zuviel/zuwenig gesetzt oder einfache und doppelte Hochkommas verwechselt wurden.
 
Zuletzt bearbeitet:
Hmm, afaik ist die Variable $_SERVER["PATH_TRANSLATED"] bei PHP5 nicht mehr vorgesehen.
Wenn SCRIPT_FILENAME jetzt allerdings auch nicht gesetzt ist, weiß ich weiter keine Hilfe...
 
Zurück
Oben