php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.11.2004, 15:41  
Gast
 
Beiträge: n/a
Standard Abbruch bei Aufruf von ImageFunktion

Hola beisammen,

ich habe folgendes Problem:

Ein Script zur Thumbnailerstellung, welches bei mir Zuhause problemlos läuft.
Leider bricht dieses Script auf domainGo ohne Fehlermeldung ab, und zwar an der Stelle, an der zum erstenmal eine ImageFunktion (imagecreatefromjpeg)
aufgerufen wird.

der Quellcode sieht folgenderweise aus:

Code:
echo "Var: IMAGE -->".$image."

";

echo "VORHER
";

     $image = imagecreatefromjpeg($image);

echo "NACHHER!!!!";
Resultierende Ausgabe:

Code:
Var: IMAGE -->upload/1.jpg

VORHER
Das wars dann aber auch schon, abgebrochen wird mit dem Aufruf der imagefunktion,("nachher" wird net ausgegeben)

Das restliche Script wird nicht mehr abgearbeitet!

Das Script ist selber geschrieben, funzt bei mir auf localhost tadelos.

Error_reporting ist an, der übergebene Pfad zur Bilddatei ist richtig, gebe ich einen falschen Pfad
oder ein nicht existentes bild an wird brav eine Warning ausgespuckt und das script weiter abgearbeitet.

An fehlenden Rechten kanns auch net liegen, da ich bei einer Probeinstalation alle rechte aller beteiligten Ordner/Scripte und Dateien für alle vergeben habe.

Der Provider hat einen CGI-Debugger installiert, welcher sich auch beharlich ausschweigt.
http://www.schmidts-autoaufbereitun...-cgi/cgi-debug/

Als localhost (da funktioniert mein Script tadellos) läuft bei mir:

XAMPP für Windows Version 1.4.2
PHP Version 4.3.6

gd
GD Support enabled
GD Version bundled (2.0.22 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

Beim Provider:

Linux
PHP Version 4.3.4

gd
GD Support enabled
GD Version bundled (2.0.15 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled


Also beide Versionen recht nah beieinander....

Provider meint inzwischen, "sie gingen davon aus, dass es sich um einen Scriptfehler handelt",
was ich ganz drollig finde, weil
a) das script zuhause problermlos läuft (ok, kann jeder sagen)
b) ich die Stelle ja recht genau (Zeilengenau) eingekreist habe, in der der Fehler auftritt
und wo bitte befindet sich der fehler in

Code:
$image = imagecreatefromjpeg($image);
c) und wenn ich nen Fehler drin habe, warum gibbets dann keine Fehlermeldung zum Abbruch?!

Bin also Recht ratlos schwanke irgendwo zwischen und , hoffe, jemand kann mir weiterhelfen.

[/php]
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.11.2004, 16:50  
Gast
 
Beiträge: n/a
Standard Re: Abbruch bei Aufruf von ImageFunktion

Zitat:
Zitat von dablake
Ein Script zur Thumbnailerstellung, welches bei mir Zuhause problemlos läuft.
Leider bricht dieses Script auf domainGo ohne Fehlermeldung ab, und zwar an der Stelle, an der zum erstenmal eine ImageFunktion (imagecreatefromjpeg)
aufgerufen wird.
Du teilst viel mit, aber leider nicht das Wichtigste.
1. wenn keine Fehler angezeigt werden, steht mit Sicherheit was im Error Logfile
2. auch angeraten: error_reporting(15)
3. da Du JPG Bilder schrumpfen möchtest, ein Beispiel:
http://test.php-help.info/img-6/

Das Script loft nur ab memory_limit=24M!

Der Grund: PHP packt die das JPG erst aus, bevor es bewuselt wird. image.jpg ist nur ca. 800KB groß... Unkomprimiert isses über 11 MB groß.
  Mit Zitat antworten
Alt 05.11.2004, 16:58  
Gast
 
Beiträge: n/a
Standard

hallo meikel,

im Error-log steht nichts (sofern es sich hierbei ums error log handelt...)
-->
http://www.schmidts-autoaufbereitung...cgi/cgi-debug/

Danke für den Tip mit dem memory limit,
ist nen sau billiger provider, werd gleich mal checken, wie es damit aussieht!

Thx, blake
  Mit Zitat antworten
Alt 05.11.2004, 17:00  
Erfahrener Benutzer
 
Registriert seit: 01.12.2003
Beiträge: 4.113
supertramp
Standard

Zitat:
Zitat von dablake
http://www.schmidts-autoaufbereitun...-cgi/cgi-debug/
müßen wir den Rest der Domain erraten?
supertramp ist offline   Mit Zitat antworten
Alt 05.11.2004, 17:05  
Gast
 
Beiträge: n/a
Standard

mmmhhh,

memory_limit ist 50mb

--> auszug aus phpinfo:

memory_limit 50M

die komplette phpinfo findest Du unter

http://www.schmidts-autoaufbereitung...nd/phpinfo.php

Gruß blake
  Mit Zitat antworten
Alt 05.11.2004, 17:13  
Gast
 
Beiträge: n/a
Standard

Der Link zum "logfile" wurde vervollständigt,
http://www.schmidts-autoaufbereitung...cgi/cgi-debug/
aber wie gesagt, da gibbets nix zu lesen.

error_reporting(15); ist eingestellt, nach wie vor gleiche ausgabe, also bis zum aufruf von imagecreatefromjpeg und dann ist schicht.

Im helpforum des Providers wurde ich darauf hingewiesen, dass beim Provider php unter unix läuft und diese durchaus recht unterschiedlich zur Windows version ausfällt.

Bin kurz davor, den technik-support zu nutzen, dummerweise ist die domain recht günstig, was darauf hinaus läuft das eine Support-anfrager mal satte 2,99 € kostet (soviel, wie die ganzer domain für einen monat...)

Gruß blake
  Mit Zitat antworten
Alt 05.11.2004, 17:19  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von dablake
die komplette phpinfo findest Du unter
http://www.schmidts-autoaufbereitung...nd/phpinfo.php
Danke.

Der Configure String ist etwas eigentümlich:
--with-jpeg-dir=../jpeg-6b/

Eigentlich müßte dort das Installationsverzeichnis (absolut) von JPEG angegeben werden. IdR. ist das /usr oder /usr/local

a. Ganz dumme Frage: klappern die GD Funktionen überhaupt?
b. schick mir mal Dein Script und ein Bild (Link reicht auch). Dann teste ich das mal auf http://test.php-help.info
  Mit Zitat antworten
Alt 05.11.2004, 17:27  
Gast
 
Beiträge: n/a
Standard

herje

hab dein Script hochgeladen, funzt!

--> http://www.schmidts-autoaufbereitung...akethumbs4.php

womit wir wohl bei llinux angekommen wären,
einfache Frage: wenn ich bei nem Linux-Rechner die Pfadangabe mit / schreibe, kommt der damit zurecht oder muss ich grundsätzlich backslash nutzen?!
  Mit Zitat antworten
Alt 05.11.2004, 17:33  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von dablake
hab dein Script hochgeladen, funzt!
Dann haste ja ne funktionierende Vorlage.

Zitat:
womit wir wohl bei llinux angekommen wären,
einfache Frage: wenn ich bei nem Linux-Rechner die Pfadangabe mit / schreibe, kommt der damit zurecht oder muss ich grundsätzlich backslash nutzen?!
Linux erwartet bei Pfadangaben grundsätzlich nur Slashes.
  Mit Zitat antworten
Alt 05.11.2004, 17:39  
Gast
 
Beiträge: n/a
Standard

Ja, Danke auch für die Vorlage, nur isses ja nicht so, dass ich einfach nur ne vorlage genommen hab und die reingezogen, sondern mir aus einer (zugegebennerweise kopierten) Vorlage ne function gescvhrieben hab, die ich universell anzuwenden gedachte, und das die, wo ich sie mal wirklich verwenden will, den Dienst verweigert nervt mich ja doch schon arg.

Vor allem kapier ich nach wie vor net, warum der oben angegebene Code Schnipsel die "abgebrochene" Ausgabe fabriziert...

Heir nochmal mein Script plus funktionen:

Um das Script zu testen, muss Du in dem Ordner, in dem das Script ausgeführt wird einen Ordner mit Namen upload haben in dem sich die bilder befinden.



Hier das Script:


//////////////////////////////////////////////////////////////////////////////
////////////////////////

PHP-Code:

<?

error_reporting
(15);
session_start();
//include("check.php");
//include("../functions.php");


if($forbidden!=1)
{
//// Hier gehts los




$pfad "upload";

$verz=opendir ($pfad);
while (
$file readdir ($verz))
{
  if(
$file != "." && $file != "..")
  {
  echo 
"file: [b]".$file."[/b]
"
;
  
thumb($file,"upload","photos");
  
addLogo($file,"Picslogo.png",20,"photos","upload","Bilder");
  
$i++;
  }
}
closedir($verz);

echo 
"<hr><hr>[b]Anzahl erstellter Thumbs: ".$i."[/b]";


}else{

echo 
"Dieser Bereich ist passwortgeschützt!
"
;
echo 
"[url='pwd_check.php']Zur Passworteingabe[/url]";

}

////////////////////////////////
///  hier die Funktionen ,Thumb und addlogo, die ich normalerweise
///  separat aufberwahre:

function thumb($image,$from="nil",$pfad="nil",$x=100,$y=100 )

{
echo 
"image-->".$image."
"
;
echo 
"from-->".$from."
"
;
echo 
"pfad-->".$pfad."
"
;

$types = array (=> "gif""jpeg""png""swf""psd""wbmp");
$arr explode(".",$image);
$name $arr[0];
$endung $arr[1];


if(
$from!="nil")
{
$image="".$from."/".$image;
echo 
"Importpfad:".$image."
"
;
$imagee $image// dient nur der ausgabe!
}



$xB $x// eingebettet
$yB $y;

/* überpruefung auf der paramenter da KONSTANTEN nicht notwendig
     (!isset ($x) || ereg ('^[0-9]{1,}$', $x, $regs)) &&
     (!isset ($y) || ereg ('^[0-9]{1,}$', $y, $regs)) &&
     (isset ($x) || isset ($y))
          ? true
          : DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');
*/

// check der angabe von image



     
!isset ($image)
          ? DIE (
'Es wurde kein Bild angegeben!')
          
// Es wurde eine Datei benannt, aber existiert sie überhaupt?
          
: !file_exists($image)
               ? DIE (
'Die angegebene Datei konnte nicht auf dem Server gefunden werden!')
               : 
false;


     
// Wir versuchen nun, die Eckdaten der Bilddatei zu ermitteln
     // Die Funktion getimagesize() liefert uns einen Array mit 4 Elementen zurück
     // Diese Elemente sind:
     // [0]: Breite des Bildes in Pixeln
     // [1]: Höhe des Bildes in Pixeln
     // [2]: Grafikformat des Bildes (1: GIF, 2: JPEG, 3: PNG, 4: SWF, 5: PSD, 6: WBMP)
     // [3]: HTML-String der Form 'width="xxx" height="xxx"'


     
$imagedata getimagesize($image);
     
$w $imagedata[0];
     
$h $imagedata[1];


     !
$imagedata[2] || $imagedata[2] == || $imagedata[2] == 5
          
? DIE ('Bei der angegebenen Datei handelt es sich nicht um ein Bild!')
          : 
false;

     
// Nun werden wir herausfinden, ob die auf dem Server installierte GD-Library
     // das Grafikformat des Bildes unterstützt
     
eval ('
     if (!(imagetypes() & IMG_'
.strtoupper($types[$imagedata[2]]).')) {
          DIE ("Das ".strtoupper($types[$imagedata[2]])."-Format wird nicht unterstützt!");
     }
     '
);


     
// thumbs berechnen


     
if($w>=$h)
     {
     
$base "x";
     }

     if (
$base=="x")
     {
     
$yfloor($h/$w*$x);
     }else{
     
$xfloor($w/$h*$y);

     }

     
//echo "X:".$x." Y:".$y."
";
     //echo "
XB:".$xB." YB:".$yB."
";

     $image = imagecreatefromjpeg($image);

     $thumb = imagecreatetruecolor($xB,$yB);

      $farbe_body=imagecolorallocate($thumb,0,0,0); // erstellt schwarze farbe
      imagefill($thumb,0,0,$farbe_body);            // färbt den thumbhintergrund schwarz

     //imagecopyresized(int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)



     if($base=="
x")
     {
     $start= ($yB-$y)/2;
     //echo "
Start:".$start;
     imagecopyresampled ($thumb, $image, 0, $start, 0, 0, $x, $y, $imagedata[0], $imagedata[1]);
     }else{
     $start= ($xB-$x)/2;
     //echo "
Start:".$start;
     imagecopyresampled ($thumb, $image, $start, 0, 0, 0, $x, $y, $imagedata[0], $imagedata[1]);
     }

if ($pfad!="
nil")
   {
   if(!file_exists($pfad))
   {
   mkdir($pfad);
   }
     call_user_func("
image".$types[$imagedata[2]], $thumb, $pfad."/".$name."_thumb.".$endung);
   }else{
     call_user_func("
image".$types[$imagedata[2]], $thumb, $name."_thumb.".$endung);
   }

     imagedestroy ($image);
     imagedestroy ($thumb);



echo "
X:".$x." Y:".$y."
";
echo "
XB:".$xB." YB:".$yB."
";
echo "
[b]".$imagee."[/bwurde als thumb gespeichert unter [b]".$pfad."/".$name."_thumb.".$endung."[/b]
";


}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function addLogo($image,$logo,$logoProzent=20,$pfadNew="
nil",$pfadImage="nil",$pfadLogo="nil",$new="nil")

{
// $image,               name der bilddatei -->"
beispiel.jpg"
// $logo,                name der logodatei -->"
logo.png"
// $LogoProzent          Prozent der Bildbreite, die vom Logo eingenommen werden soll
// $pfadNew="
nil"        pfad unterdem new abgespeichert wird "../pics" ohne / am ende!!!
// $pfadImage="
nil",     pfad zur bilddatei "../uploads" ohne / am ende!!!
// $pfadLogo="
nil"       pfad zur logodtei "../pics" ohne / am ende!!!
// $new="
nil",           name des erzeugten bildes, wenn nicht übergeben
//                       bleibt name des imagedatei behalten




  $types = array (1 => "
gif", "jpeg", "png", "swf", "psd", "wbmp");
  $arr = explode("
.",$image);
  $name = $arr[0];
  $endung = $arr[1];

if($new=="
nil")
                {
                $new=$image;
                }


if($pfadImage!="
nil")
                {
                $image="".$pfadImage."
/".$image;
                }

if($pfadLogo!="
nil")
                {
                $logo="".$pfadLogo."
/".$logo;
                }

if($pfadNew!="
nil")
                {
                $new="".$pfadNew."
/".$new;

                if(!file_exists($pfadNew))
                             {
                             mkdir($pfadNew);
                             }
                }


// check der angabe von image

     !isset ($image)
          ? DIE ('Es wurde kein Bild angegeben!')
          // Es wurde eine Datei benannt, aber existiert sie überhaupt?
          : !file_exists($image)
               ? DIE ('Die angegebene Datei konnte nicht auf dem Server ('.$image.') gefunden werden!')
               : false;

     // Wir versuchen nun, die Eckdaten der Bilddatei zu ermitteln
     // Die Funktion getimagesize() liefert uns einen Array mit 4 Elementen zurück
     // Diese Elemente sind:
     // [0]: Breite des Bildes in Pixeln
     // [1]: Höhe des Bildes in Pixeln
     // [2]: Grafikformat des Bildes (1: GIF, 2: JPEG, 3: PNG, 4: SWF, 5: PSD, 6: WBMP)
     // [3]: HTML-String der Form 'width="
xxx" height="xxx"'



     $imagedata = getimagesize($image);
     $logodata  = getimagesize($logo);

     $w = $imagedata[0];
     $h = $imagedata[1];



     !$imagedata[2] || $imagedata[2] == 4 || $imagedata[2] == 5
          ? DIE ('Bei der angegebenen ImageDatei handelt es sich nicht um ein Bild!')
          : false;


     !$logodata[2] || $logodata[2] == 4 || $logodata[2] == 5
          ? DIE ('Bei der angegebenen LogoDatei handelt es sich nicht um ein Bild!')
          : false;

     // Nun werden wir herausfinden, ob die auf dem Server installierte GD-Library
     // das Grafikformat des Bildes unterstützt
     eval ('
     if (!(imagetypes() & IMG_'.strtoupper($types[$imagedata[2]]).')) {
          DIE ("
Das ".strtoupper($types[$imagedata[2]])."-Format des Images wird nicht unterstützt!");
     }
     ');

     // Nun werden wir herausfinden, ob die auf dem Server installierte GD-Library
     // das Grafikformat des Logos unterstützt
     eval ('
     if (!(imagetypes() & IMG_'.strtoupper($types[$logodata[2]]).')) {
          DIE ("
Das ".strtoupper($types[$logodata[2]])."-Format des Logos wird nicht unterstützt!");
     }
     ');



  $im1 = call_user_func("
imagecreatefrom".$types[$logodata[2]], $logo);
  $im2 = call_user_func("
imagecreatefrom".$types[$imagedata[2]], $image);

  // Logo muss bzgl. größe an bild angepasst werden
  $width  = (imagesx($im2)/100)*$logoProzent;
  $faktor = $width/imagesx($im1);
  $height = imagesy($im1)*$faktor;

  $thumb = imagecreatetruecolor($width,$height);
  imagecopyresampled ($thumb, $im1, 0, 0, 0, 0,$width,$height,$logodata[0], $logodata[1]);
  // Logo ist nun immer gleich groß, egal, wie groß die einzelnen image sind

  ImageCopy ($im2, $thumb, 0, 0, 0, 0, $width, $height);

  imagepng($im2, $new );

  ImageDestroy($im1);
  ImageDestroy($im2);
  ImageDestroy($thumb);
  echo "
[b]$image[/bwurde mit dem Logo [b]$logo[/bversehen und gespeichert unter [b]$new[/b]";
  echo "
";
  echo "
<hr>

";
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

?>
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abbruch nach einiger Zeit.... dh1sbg PHP-Fortgeschrittene 3 08.07.2008 12:48
Automatischer Aufruf einer anderen PHP Datei loki0815 PHP Tipps 2008 7 01.07.2008 17:37
Lange Ladezeiten beim Aufruf von PHP-Dateien Benny 800 PHP Tipps 2008 3 27.05.2008 12:05
Problem beim Aufruf einer Funktion elwood PHP Tipps 2008 6 30.08.2007 12:54
Verständnisfrage: Aufruf von mehreren Usern vegeta PHP Tipps 2006 2 02.06.2006 15:39
Was für ein Aufruf ist das? Zwei Doppelpunkte Anotherone PHP Tipps 2006 9 02.02.2006 16:33
Aufruf einer PHP-Datei via JAvaScript Xalon HTML, Usability und Barrierefreiheit 10 25.12.2005 17:56
Bild bei aufruf erstellen? Smily0412 PHP-Fortgeschrittene 2 16.12.2005 20:30
bei jedem Aufruf Ordner mit id erstellen PHP Tipps 2007 1 13.12.2005 14:31
foreach: Fehler beim ersten Aufruf mristau2k5 PHP Tipps 2005-2 3 15.08.2005 23:14
imap_header() - Keine Header mehr nach erneutem Aufruf Chr!s PHP Tipps 2005-2 3 15.08.2005 17:19
Aufruf eines PHP Skriptes aus JAVA Umgebung PHP Tipps 2005-2 3 14.06.2005 17:39
DELETE Aufruf Datenbanken 3 26.04.2005 16:33
[Erledigt] php.exe(n) Aufruf zurückverfolgen? PHP-Fortgeschrittene 0 08.12.2004 16:08
Kritischer Abbruch PHP Tipps 2004-2 3 11.11.2004 18:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
logfile logodatei, domaingo getimagesize, imagefunktion, was ist eine imagefunktion, php abbruch nach imagejpeg, domaingo memory limit, php alle funktionen abbrechen, php aufruf url abbrechen, imagecreatetruecolor abbruch, imagecreatetruecolor( abbruch, \die angegebene datei konnte nicht auf dem server gefunden werden!\, file_exists liefert immer false, freetype php pfad herausfinden, memory_limit domaingo, freetype domaingo, function session_start fehlermeldung domaingo, xampp windows 7 session_start lange ladezeit

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.