XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   [PHP] Bildergalerie Problem (http://xhtmlforum.de/showthread.php?t=43463)

SPMan 15.12.2006 19:43

[PHP] Bildergalerie Problem
 
Moin Kinners,

PHP war ja noch nie wirklich mein Steckenpferd. Darum bräuchte ich die Hilfe von ein paar Script-Experten. Ich habe schon länger erfolgreich eine Bilder-Galerie am laufen und wollte sie nun zu Weinachten als kleine Überraschung auf die Homepage Bekannter(Gartenbau), um die ich mich kümmere, verpflanzen. ;)
Bisher lief die Galerie auf verschiendenen Servern bei verschiedenen Anbietern einwandfrei, nur hier möchte sie nicht wie ich wohl will.

Ich bekomme die Fehlermeldungen(mal anzahl der Bilder):
Code:

Warning: imagejpeg(): Unable to access _galerie_01.jpg in /home/www/#login#/html/seiten/sitzplatz/pp_funktionen.php on line 242
Eigentlich sollte an dieser Stelle automatisch von den Ursprungsversionen (den größen Bildern) Thumbs/Vorschauversionen mit der GD-Lib erstellt werden.
Ich habe mit dem Support des Anbieters Kontakt aufgenommen, der meinte, dass ich den Thumbspfad anpassen muss, da ansonsten die "Serveresctrictions" greifen.
Daraufhin habe ich, neben dem Standartpfad für die Thumbs
Code:

$thumbpfad='thumbs/';
zum Testen einen "Serverpfad" (absolut) angelegt:
Code:

$serverpfad='/home/www/#login#/html/seiten/sitzplatz/thumbs';
, damit die "Serveresctrictions" nicht greifen.
Allein
Code:

$thumbpfad='/seiten/sitzplatz/thumbs';
hat nämlich leider Gottes auch nicht geklappt.

Zu allem Überfluss ist noch eine zweite Fehlermeldung (mal Anzahl der Bilder) dazugekommen:
Code:

Warning: Missing argument 8 for vorschau_mit_link() in /home/www/web475/html/seiten/sitzplatz/pp_funktionen.php on line 77
hier noch besagte Funktion vorschau_mit_link in der Urspungsversion
function vorschau_mit_link
Code:

($pfad,$datei,$anzahl,$maxbreite,$maxhoehe,$thumbs_pro_zeile,$thumbpfad)
        {
        $re="";

        // ermitteln des zugehoerigen Thumbnamens
        $thumb_vorhanden="nein";
        $ar=explode('/',$pfad);
        $i=0; $thumbname='';
        while ($ar[$i]!=''){$thumbname.="_".$ar[$i];$i++;}
        $thumbname.="_".$datei;
        $original=$pfad.$datei;
        $vorschau=$thumbpfad.$thumbname;

        // checken ob Thumb bereits existiert
        $thumb_vorhanden="nein";
        if (file_exists($thumbpfad.$thumbname)) {$thumb_vorhanden="ja";}

        // wenn Thumb noch nicht da, wird es erzeugt
        if ($thumb_vorhanden=='nein'){mach_thumb($original,$vorschau,$maxbreite,$maxhoehe);        }

        //Zeilenumbruch nach $thumbs_pro_zeile Vorschaubildern
        if (($anzahl % $thumbs_pro_zeile) == 0 AND $anzahl!=0) {$re.="<br /><br />";}

          $url='pp_galerie.php?pfad='.$pfad.'&amp;odatei='.$datei;

            // Anfügen der Vorschau an Anzeige (Thumb wird mit HTML-Link auf neues Browserfenster belegt)
            $bild_n_link='<a href="'.$url.'" onclick="return !fa(this.href)"><img src="'.$vorschau.'" alt="Vorschau" /></a>';

          // Seitenabstand zum nächsten Thumb
          $re.=$bild_n_link.'&nbsp;&nbsp;';

            return $re;
        }

und die angepasste Version mit der Variablen Serverpfad für den absoluten Pfad:

Code:

function vorschau_mit_link($pfad,$datei,$anzahl,$maxbreite,$maxhoehe,$thumbs_pro_zeile,$thumbpfad,$serverpfad)
        {
        $re="";

        // ermitteln des zugehoerigen Thumbnamens
        $thumb_vorhanden="nein";
        $ar=explode('/',$pfad);
        $i=0; $thumbname='';
        while ($ar[$i]!=''){$thumbname.="_".$ar[$i];$i++;}
        $thumbname.="_".$datei;
        $original=$pfad.$datei;
        $vorschau=$serverpfad.$thumbname;

        // checken ob Thumb bereits existiert
        $thumb_vorhanden="nein";
        if (file_exists($serverpfad.$thumbname)) {$thumb_vorhanden="ja";}

        // wenn Thumb noch nicht da, wird es erzeugt
        if ($thumb_vorhanden=='nein'){mach_thumb($original,$vorschau,$maxbreite,$maxhoehe);        }

        //Zeilenumbruch nach $thumbs_pro_zeile Vorschaubildern
        if (($anzahl % $thumbs_pro_zeile) == 0 AND $anzahl!=0) {$re.="<br /><br />";}

          $url='pp_galerie.php?pfad='.$pfad.'&amp;odatei='.$datei;

            // Anfügen der Vorschau an Anzeige (Thumb wird mit HTML-Link auf neues Browserfenster belegt)
            $bild_n_link='<a href="'.$url.'" onclick="return !fa(this.href)"><img src="'.$vorschau.'" alt="Vorschau" /></a>';

          // Seitenabstand zum nächsten Thumb
          $re.=$bild_n_link.'&nbsp;&nbsp;';

            return $re;
        }

Aufgerufen wird die Galerie überlicherweise mit:

Code:

http://www.irgendwas.de/seiten/sitzplatz/pp_index.php?pfad=galerie/
Ich hoffe ich sehe einfach nicht den Wald vor lauter Bäumen und jemand von Euch sieht eine Lösung bzw. den Fehler und kann mir helfen, da ich sehr zeitnah das Ding zum laufen bringen muss.
Es sollte nämlich eigentlich, einschl. eines anderen Geschenks, Montag in die Post gehen.

Vielen Dank für Eure Mühe im Voraus
SPMan

Yhi 15.12.2006 21:00

Sollte ein Berechtigungsproblem sein (Chmod)

Einfach mal dem thumbs Ordner chmod 777 geben ;)

SPMan 15.12.2006 21:26

Zitat:

Zitat von Yhi (Beitrag 318037)
Sollte ein Berechtigungsproblem sein (Chmod)

Einfach mal dem thumbs Ordner chmod 777 geben ;)


Danke für den Hinweis.
Wie erwähnt habe ich die Galerie schon seit längerem erfolgreich, ohne Probleme, in der Urversion auf anderen Servern laufen.
Demnach hat der Thumbsordner, eigentlich leider, schon die Berechtigung 777, denn wenn dies das Problem gewesen wäre, wäre sogar ich drauf gekommen... :(
Aber trotzdem danke für die Hilfe, Yhi. :)

SPMan

The Doc 15.12.2006 21:26

Code:

$thumbpfad='/seiten/sitzplatz/thumbs';
Das ist ein absoluter Pfad (da ich denke, dass dein Server *nix benutzt). Versuch mal folgendes:

Code:

$thumbpfad='seiten/sitzplatz/thumbs';
Das geht jetzt vom aktuellen Ordner aus [getcwd()] zu diesem Ordner.
Natürlich chmod von Yhi nicht vergessen!

SPMan 15.12.2006 21:56

Zitat:

Zitat von The Doc (Beitrag 318050)
Code:

$thumbpfad='seiten/sitzplatz/thumbs';

Hallo Doc,
auch Dir danke für Deine Hilfe.
Aber auch mit
Code:

$thumbpfad='seiten/sitzplatz/thumbs';
bekomme ich noch immer die Fehlermeldung
Zitat:

Warning: imagejpeg(): Unable to access seiten/sitzplatz/thumbs_galerie_01.jpg in /home/www/#login#/html/seiten/sitzplatz/pp_funktionen.php on line 241
:icon_cry:

Trotzdem danke... :)

SPMan

netspy 15.12.2006 23:04

Zitat:

Zitat von SPMan (Beitrag 318049)
Wie erwähnt habe ich die Galerie schon seit längerem erfolgreich, ohne Probleme, in der Urversion auf anderen Servern laufen.

Wie jetzt, auf anderen Server läuft das Script, auf diesem aber nicht? Wenn ja, warum schließt du dann fehlende Berechtigung aus?

Zitat:

Zitat von SPMan (Beitrag 318049)
Demnach hat der Thumbsordner, eigentlich leider, schon die Berechtigung 777, denn wenn dies das Problem gewesen wäre, wäre sogar ich drauf gekommen... :(

Was heißt eigentlich? Hat oder hat nicht - das lässt sich doch leicht (auch mit einem FTP-Programm) nachprüfen. Davon abgesehen reicht 755 im Allgemeinen auch aus, sofern FTPD- und HTTPD-User gleich sind.

Wenn es nicht an den Berechtigungen liegt, solltest du erst mal überprüfen, ob die Pfade wirklich stimmen. Kannst du bspw. einfach, indem du eine Datei dorthin kopiert und diese mit PHP ausliest.

Mario

SPMan 15.12.2006 23:16

Zitat:

Zitat von netspy (Beitrag 318064)
Wie jetzt, auf anderen Server läuft das Script, auf diesem aber nicht? Wenn ja, warum schließt du dann fehlende Berechtigung aus?

Weil ich die Berechtung für den Thumbsordner sowohl mit einem FTP-Programm, als auch mit dem Online FTP-Tool (Confixx-Konsole) geprüft habe.
Die Rechte stehen definitiv auf 777, also voll freigegeben.

Zitat:

Was heißt eigentlich? Hat oder hat nicht - das lässt sich doch leicht (auch mit einem FTP-Programm) nachprüfen. Davon abgesehen reicht 755 im Allgemeinen auch aus, sofern FTPD- und HTTPD-User gleich sind.
Das "eigentlich" war auf das "leider" bezogen. "Eigentlich leider", weil anonsten das Problem schon gelöst wäre.
755 sollte, wie Du schreibst, ausreichend sein, aber ich wollte sicher gehen.

Zitat:

Wenn es nicht an den Berechtigungen liegt, solltest du erst mal überprüfen, ob die Pfade wirklich stimmen. Kannst du bspw. einfach, indem du eine Datei dorthin kopiert und diese mit PHP ausliest.
Die Pfade stimmen auch, habe ich schon mehrfach überprüft.
Dies sind die Fehlerquellen gewesen, die ich zuerst überprüft habe.
Auf einem anderen Server, auf den das Script läuft, ist dem Server auch egal, ob der Pfad relativ oder absolut ist.
Dort reicht
Code:

$thumbpfad='thumbs/';
aus...

Danke für Deine Hilfe, Mario. :)

Viele Grüße
SPMan

netspy 15.12.2006 23:30

Kannst du mal den relevanten Code mit imagejpeg() posten, wo der Fehler auftritt?

Mario

SPMan 16.12.2006 00:52

Zitat:

Zitat von netspy (Beitrag 318071)
Kannst du mal den relevanten Code mit imagejpeg() posten, wo der Fehler auftritt?

Mario

Hi Mario,
ich nehme an Du meinst die Stelle aus dem Code:

Code:

function mach_thumb($file, $save, $width, $height)
        {
        $infos = @getimagesize($file);
        $iWidth = $infos[0];
        $iHeight = $infos[1];
        $iRatioW = $width / $iWidth;
        $iRatioH = $height / $iHeight;
        if($iRatioW < $iRatioH)
                {
                $iNewW = $iWidth * $iRatioW;
                $iNewH = $iHeight * $iRatioW;
                }
        else
                {
                $iNewW = $iWidth * $iRatioH;
                $iNewH = $iHeight * $iRatioH;
                }

        if($infos[2] == 1) {$imgA = imagecreatefromgif($file);}
        elseif($infos[2] == 2) {$imgA = imagecreatefromjpeg($file);}
        elseif($infos[2] == 3) {$imgA = imagecreatefrompng($file);}
        else {return false;}

        if(!$imgA) {return false;}

        $imgB = @imagecreatetruecolor($iNewW, $iNewH);
        @imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW, $iNewH, $infos[0], $infos[1]);

        if(!$imgB) {return false;}

        if ($infos[2] == 1) {imagegif($imgB, $save);}
        if ($infos[2] == 2) {imagejpeg($imgB, $save);}
        if ($infos[2] == 3) {imagepng($imgB, $save);}

        return;
        }

Grüße.
SPMan

netspy 16.12.2006 01:29

Meine Vermutung ist trotz allem, dass da irgendwie ein falscher Pfad zusammengesetzt wird. So ganz verstehe ich auch nicht, wie du da mit dem explode() und der while-Schleife den Thumbnail-Namen bastelst. Wenn ich das richtig sehe, ließe sich das auch mit einem str_replace('/', '_', $pfad) bewerkstelligen.

Wenn du bei $thumbpfad (so wie weiter unten geschrieben) einen Pfad ohne abschließenden Slash übergibst, kommt in $vorschau auf jeden Fall was falsches raus, da $thumbname ja keinen führenden Slash hat. Das könnte deinen Fehler evtl. schon erklären.

Mario


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:31 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023