Apache hängt sich auf...

Alles, was PHP betrifft, kann hier besprochen werden.

Apache hängt sich auf...

Postby thorsin » 05. March 2006 20:51

hi all,
als neuling hier erstmal ne schöne knobelaufgabe für euch ;-)

folgends:
habs xampp unter winXP SP2 installiert.
nun benutze ich ein script um dateien an user zu liefern, bzw. diese vor dem ausliefern zu verkleinern (thumbnails machen wenn es sie noch nicht gibt). das funktioniert auch so weit ganz toll.
die url des scripts ist dann blabla/bild.php?bild=3&anzeigen

wie gesagt, alles schön so weit.

nun wirds kryptisch:
ich will das script benutzen um dateien in eine tabelle, also quasi eine art gallerie zu schreiben. sieht so aus:
Code: Select all
<tr>
<td><img src="bild.php?id=3&anzeige"></td>
</tr>


nu fängts an kritisch zu werden.
an dieser stelle hängt sich der indianer einfach auf, in der access.log steht ein 200 -> seite korrekt ausgeliefert.

php gibt mir mit error_reporting('E_ALL') auch nix, errorLog des indianers steht auf debug, auch keine info, er frisst keine unmengen an speicher, cpu-load geht nicht hoch, liefert aber keine seiten mehr aus, bis er neu gestartet wurde...

doktor da grade mal eben 2 tage an dem besch***** anzeigen dieser dämlichen tabelle, wenn also einer ne lösung hat, hat derjenige direkt n foren-fan ;-)

edit: das erste bild erstellt er auch, nur keine weiteren danach. hab auch schon exec(), passthru() und system() getauscht, auch kein erfolg
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby thorsin » 05. March 2006 21:00

hmmmm, das verschieben kann ich zwar nicht unbedingt verstehen, da das prob WENN, dann eher was mit Imagemagick zu tun hat (das die bilder verkleinert) als mit PHP, aber ich füge mich *duck*
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 05. March 2006 21:00

a)
Code: Select all
<tr>
<td><img src="bild.php?id=3&anzeige"></td>
</tr>

ist zwar nicht so tragisch, aber das sollte so aussehen:
Code: Select all
<tr>
<td><img src="bild.php?id=3&amp;anzeige"></td>
</tr>


b)
php gibt mir mit error_reporting('E_ALL') auch nix

du meinst:
Code: Select all
error_reporting(E_ALL);


c)
edit: das erste bild erstellt er auch, nur keine weiteren danach.

dann hättest du erkannt, dass du ein register_globals Problem hast (Was ich laut deinen Angaben aber auch nur raten kann...). Les' im PHP-Handbuch bitte nach, wie man externe Variablen benutzt.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 05. March 2006 21:04

Wiedmann wrote:a)
Code: Select all
<tr>
<td><img src="bild.php?id=3&anzeige"></td>
</tr>

ist zwar nicht so tragisch, aber das sollte so aussehen:
Code: Select all
<tr>
<td><img src="bild.php?id=3&amp;anzeige"></td>
</tr>


sieht natürlich so aus... hab ja auch das <table... weggelassen
Wiedmann wrote:b)
php gibt mir mit error_reporting('E_ALL') auch nix

du meinst:
Code: Select all
error_reporting(E_ALL);


da haste auch recht, schon wieder erwischt ;-)
Wiedmann wrote:c)
edit: das erste bild erstellt er auch, nur keine weiteren danach.

dann hättest du erkannt, dass du ein register_globals Problem hast (Was ich laut deinen Angaben aber auch nur raten kann...). Les' im PHP-Handbuch bitte nach, wie man externe Variablen benutzt.

[/quote]
joar, da schau ich doch mal nach, obwohl, versteh ich nicht, gebe laut obs was hilft...

thx für die schnelle antwort
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby thorsin » 05. March 2006 21:14

on/off, keine veränderung....
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 05. March 2006 21:25

Ich rate mal du meinst damit die Einstellung für register_globals? Machst du die überhaupt in der richtigen Ini? Wobei das egal ist. Wie schon geschrieben sollst du schauen wie man es richtig macht (und nicht einfach funktionieren pfuscht) ;-)

Zu deinem error_reporting... das hast du aber schon in der "bild.php". Wenn nicht schreib das da rein, kommentier die Scriptteile aus die den content-type ändern, und ruf das Script + Parameter nicht über den IMG-Tag einer anderen Datei auf, sondern über direkte Eingabe in der Adresszeile deines Browsers.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 05. March 2006 21:28

Wiedmann wrote:Ich rate mal du meinst damit die Einstellung für register_globals? Machst du die überhaupt in der richtigen Ini? Wobei das egal ist. Wie schon geschrieben sollst du schauen wie man es richtig macht (und nicht einfach funktionieren pfuscht) ;-)

Zu deinem error_reporting... das hast du aber schon in der "bild.php". Wenn nicht schreib das da rein, kommentier die Scriptteile aus die den content-type ändern, und ruf das Script + Parameter nicht über den IMG-Tag einer anderen Datei auf, sondern über direkte Eingabe in der Adresszeile deines Browsers.


ne phpinfo() krieg ich schon noch hin ;-), soviel zum thema in der richitgen ini...

error_reporting in der bild.php UND der gallerie.php an

wenn man das script direkt aufruft gibts ja KEINEN fehler...
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 05. March 2006 21:30

Also "http://localhost/bild.php?id=3&anzeige" in der Adresszeile eingegeben tut?
Und direkt danach wegen mir "http://localhost/bild.php?id=4&anzeige" auch noch?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 05. March 2006 21:31

jaaaaa, das macht mich ja grade wahnsinnig....

habe die befürchtung, dass er die threads nicht handlen kann...
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby thorsin » 05. March 2006 21:33

achso: wenn das bild vorher schon verkleinert wurde, zb wenn ich die bilder nacheinander einzeln aufrufe und sie gecacht sind zeigt er sie schön brav an, es liegt also am resizen mit imagemagick bzw. graphikmagick....
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 05. March 2006 21:35

an dieser stelle hängt sich der indianer einfach auf, in der access.log steht ein 200 -> seite korrekt ausgeliefert.

Welche Seite, die "bild.php"? "error.log" steht nichts?

liefert aber keine seiten mehr aus, bis er neu gestartet wurde...

Das ist aber dann seltsam. Also auch keine anderen Seiten die mit diesem Script nichts zu tun haben?

Evtl. hast du ja noch ein "EnableSendfile" Problem im Apache.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 05. March 2006 21:37

200 für die gallerie, sowie die erste bild.php aus der tabelle

enablesendfile hab ich auch schon an und aus gehabt
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 05. March 2006 22:14

Tja. *grübel* Jetzt würde mir nur selber testen bleiben.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 06. March 2006 12:46

ok, da ich nu echt kein plan mehr hab mach ich jetzt mal das, was ich am ungernsten tue, nämlich sourcecode posten...

habe coppermine installiert und auch den source aus coppermine kopiert, jedoch läuft coppermine, mein script jedoch nicht...

here we go:
Code: Select all
<?php
//ob_start();
error_reporting(E_ALL);

$smarty = new smarty();

if(DB::isError($db)) {
        die($db->getMessage());
}

$sql2 = 'SELECT name FROM *** WHERE ***='.$_GET['img_id'];
$tmp = $db->query($sql2);
if(DB::isError($tmp)) {
           die($tmp->getMessage());
       }
       
$tmp2 = $tmp->fetchrow();
$theFile = $tmp2[0];
$hash = md5($theFile);
$outfile = 'dir/dir/'.$hash.'.jpg'; 


if (file_exists($theFile)) {
//   if (isset($_GET['gallery'])){
//      if (!file_exists('dir/dir/'.$hash.'.jpg')){
//         set_time_limit(20);
//         echo memory_get_usage();
//         $tm = rand(0,25);
//         sleep($tm);
//         $bla = 'C:/Programme/GraphicsMagick-1.1.7-Q16/gm convert -resize 100x100 '.$theFile.' pics/cache/'.$hash.'.jpg';
//         echo($bla);
//         system ($bla);
//         echo memory_get_usage();
//         $pic = new IM();
//         $pic->resize($theFile, 50, 50, $hash);

         //////////////////////////////////////////////////
         //here comes a part of a coppermine photogallery//
         //////////////////////////////////////////////////
         
         // Set IM path.
//              $im_path = $CONFIG['impath'];
      
              //Check the IM path for the final slash.
//              if (eregi('/$',$im_path) or empty($im_path)) {
//                      $trailing_slash = "";
//                  } else {
//                      $trailing_slash = "/";
//                  }
      
              //Determine real paths to files.
//              $real_path_to_primary_image = realpath($path_to_primary_image);
//              $real_path_to_preview_image = realpath($path_to_preview_image);
      
              // Prevent the user from creating a process zombie by aborting while IM does its work.
              ignore_user_abort(true);
      
              // Issue the command for resizing to IM.  Have ImageMagick write the image to disk.
      
              $output = array();
      
              $cmd = 'gm convert -resize 100x100 '.$theFile.' dir/dir/'.$hash.'.jpg';
      
              exec ($cmd, $output, $retval);
//            passthru ($cmd);
//            system($cmd);
               
              // Restore the user abort setting.
              ignore_user_abort(false);
            echo ($retval);   
              if ($retval) {
                      $ERROR = $retval;
                      //if ($CONFIG['debug_mode']) {
                              // Re-execute the command with the backtit operator in order to get all outputs
                              // will not work is safe mode is enabled
                              $output = `$cmd 2>&1`;
                              $ERROR .= "<br /><br /><div align=\"left\">{$lang_image_processor_php['cmd_line']}<br /><font size=\"2\">".nl2br(htmlspecialchars($cmd))."</font></div>";
                              $ERROR .= "<br /><br /><div align=\"left\">{$lang_image_processor_php['mog_said']}<br /><font size=\"2\">";
                              $ERROR .= nl2br(htmlspecialchars($output));
                              $ERROR .= "</font></div>";
                      //}
                      die($ERROR);
      
              }
               
      }
      $client_filename = basename($theFile);
//   }

//   else {
//   }
//}


//else {
//   header("HTTP/1.0 404 Not Found");
//   die();
//}

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: image/jpg");

// the following lines are needed when the browser should download the file and not display it
if (isset($_GET['download'])&& isset($_SESSION['logged_in'])){
   header('Content-Disposition: attachment; filename= ' . $client_filename);
   header("Content-Transfer-Encoding: binary");
}
else {
   //redirect the user to an error-page...   
}


readfile($outfile);
//if (!readfile($outfile)){
//   header("HTTP/1.0 404 Not Found");
//}
//ob_flush();

?>
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 06. March 2006 12:59

Bevor ich mir das gross anschau und um sicherzugehen:
Das ist jetzt aber nicht das komplette Script?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest