Seite 1 von 1
Division by zero
Verfasst: Do 29. Jul 2004, 10:00
von preusss
Hallo Listige,
im Contenido Error Log erscheint bei mir mit schöner Regelmäßigkeit folgende Fehlermeldung, die ich nicht zuordnen kann:
Code: Alles auswählen
[29-Jul-2004 10:10:19] PHP Warning: Division by zero in /homepages/19/d82338661/htdocs/cms/front_content.php(563) : eval()'d code on line 342
[29-Jul-2004 10:10:19] PHP Warning: Division by zero in /homepages/19/d82338661/htdocs/cms/front_content.php(563) : eval()'d code on line 407
[29-Jul-2004 10:10:19] PHP Warning: Division by zero in /homepages/19/d82338661/htdocs/cms/front_content.php(563) : eval()'d code on line 472
Was bedeutet dieses und was muß ich ändern, damit es abgestellt wird. Ansonsten klappt die Seite (contenido 4.4.4) sehr gut; einige andere Probleme habe ich noch, die aber m.E. nicht mit obiger Meldung zu tun haben.
Wäre froh, wenn ihr mir weiterhelfen könntet. Vielleicht muß ich die Meldung einfach nur ignorieren?
----
Serverbetriebssystem: Apache/1.3.29 (Unix)
PHP-Version: 4.3.8
MySQL Version: 4.0.20-standard-log
[preusss]
Verfasst: Do 29. Jul 2004, 11:13
von emergence
einer deiner module verursacht das...
da es kein syntax fehler ist wird dir auch kein fehler beim modul angezeigt...
irgendwo in einem deiner modul ergibt sich lt. warn meldung eine division durch 0
möglichkeiten:
du kannst nach einander jedes modul alleine testen...
dann kannst du bestenfalls mal eingrenzen welches modul den fehler verursacht...
andere möglichkeit -> in con_code findet sich bei zeile 472 die zeile die das problem verursacht...
da du aber nicht weisst welche seite das problem verursacht müsstest du dir alle einträge bei value durchsehen...
andere möglichkeit...
contenido/includes/config.php
den eintrag
Code: Alles auswählen
/* Don't display errors */
ini_set("display_errors",false);
auf
Code: Alles auswählen
/* Don't display errors */
ini_set("display_errors",true);
ändern...
dann sollte die fehlermeldung in dem bereich aufscheinen in dem der fehler auftritt, wenn du dir die seite ansiehst...
Verfasst: Do 29. Jul 2004, 11:56
von preusss
Hallo emergence,
Vielen Dank für die schnelle Antwort. Ich habe den Schalter auf 'true' gesetzt und nun kommen direkt auf der Seite die Fehlermeldungen:
Ich sehe den Fehler auf einer Seite, in der ich fünf mal das Modul 'Bild (x,y)' eingebunden habe - also jenes Modul, wo die Vorschau 'on the fly' erstellt werden kann; ein tolles Modul...
Ich habe mir sechs verschiedene Instanzen von diesem einen Modul erzeugt, die ich jetzt auf einer Seite eingebaut habe. Anscheinend habe ich da irgendwo einen Fehler, wenn ich (statt einem tatsächlichen Biuld) eine leere Instanz belasse.
Der Fehler auf der Seite lautet:
Code: Alles auswählen
Warning: getimagesize(65): failed to open stream: No such file or directory in /homepages/19/d82338661/htdocs/cms/front_content.php(563) : eval()'d code on line 318
Er kann m.E. den Pfad zum Bild oder die Größe nicht korrekt auslesen. Oder liege ich da falsch?
Habe das Modul für Bild 5 hier mal angehängt; vielleicht entdeckst du den Fehler, den ich da eingebacken habe:
Code: Alles auswählen
Name: Bild (x,y) 05
------------
Beschreibung:
Die Größe des Vorschau-Bildes kann angegeben werden
------------
Eingabe:
echo "<table><tr>
<td>
Gewünschte Bildgröße [X] x [Y]
</td>
<td>
<input size=3 maxlength=3 type=\"text\" name=\"CMS_VAR[9]\" value=\"CMS_VALUE[9]\">x<br>
<input size=3 maxlength=3 type=\"text\" name=\"CMS_VAR[10]\" value=\"CMS_VALUE[10]\">y
</td>
</tr></table>";
------------
Ausgabe:
<?php
$Xt = "CMS_VALUE[9]"; // hochgezählt von Modul Nr. 1
$Xt = intval($Xt); // wir wollen nur ganzzahlige Dimensionen
$Yt = "CMS_VALUE[10]"; // hochgezählt von Modul Nr. 1
$Yt = intval($Yt); // wir wollen nur ganzzahlige Dimensionen
$bildpfad = "CMS_IMG[5]"; // hochgezählt von Modul Nr. 1
if ($bildpfad!=""){
$bildpfad = str_replace ('http://www.wurde_angepasst.de/cms/' , '', $bildpfad ); //Säubern des Pfades, hier den eigenen cms root pfad angeben! (Ist da der volle Pfad, also './cms/upload/' gemeint oder reicht es, es bis ins ./cms/ zu verzweigen?
$size5 = getimagesize($bildpfad); //Auslesen der Orginalbildgröße und speichern in Array; wurde von Modul Nr. 1 an hochgezählt
}
$Xs = $size5[0];
$Ys = $size5[1];
if ($Xt > 0 && $Yt > 0){ // ist die Eingabe der neuen Dimension leer, null oder negativ?
if ($Xs > Ys){ //Querformat?
$facx = ($Xt/$Xs);
$Xtn = ($Xs*$facx);
$Ytn = ($Ys*$facx);
if ($Ytn > $Yt){
$facy = ($Yt/$Ys);
$Xtn = ($Xs*$facy);
$Ytn = ($Ys*$facy);
}
else{
$Xtn = $Xtn;
$Ytn = $Ytn;
}
}
else{ //Hochformat!
$facy = ($Yt/$Ys);
$Xtn = ($Xs*$facy);
$Ytn = ($Ys*$facy);
if ($Xtn > $Xt){
$facx = ($Xt/$Xs);
$Xtn = ($Xs*$facx);
$Ytn = ($Ys*$facx);
}
else{
$Xtn = $Xtn;
$Ytn = $Ytn;
}
}
$xneu = intval($Xtn); // auch die berechneten Dimensionen sollen ganzzahlig sein
$yneu = intval($Ytn); // auch die berechneten Dimensionen sollen ganzzahlig sein
echo "<a href=\"CMS_LINK[5]\" target=\"CMS_LINKTARGET[5]\"><img src=\"CMS_IMG[5]\" border=\"0\" width=\"$xneu\" height=\"$yneu\"></a>";
echo "<br>";
echo "CMS_IMGDESCR[5]";
echo "CMS_LINKDESCR[5]";
}
else{
echo "Sie haben einen Wert kleiner gleich 0 oder aber keinen Wert für die neuen Dimensionen eingetragen!"; //Wenn Eingabe ungültig
}
?>
------------
[preusss]
Verfasst: Do 29. Jul 2004, 12:38
von emergence
preusss hat geschrieben:...wenn ich (statt einem tatsächlichen Biuld) eine leere Instanz belasse.
Der Fehler auf der Seite lautet:
Code: Alles auswählen
Warning: getimagesize(65): failed to open stream: No such file or directory in /homepages/19/d82338661/htdocs/cms/front_content.php(563) : eval()'d code on line 318
Er kann m.E. den Pfad zum Bild oder die Größe nicht korrekt auslesen. Oder liege ich da falsch?
ganz einfach -> wenn das bild nicht geladen werden kann! wird auch die größe nicht ausgelesen, deshalb dann auch der fehler mit division durch 0
es wird bei dir nur kontrolliert ob eine größe in der konfiguration definiert wurde, nicht jedoch ob das laden des bildes erfolgreich war.
du müsstest dies logik noch ins modul bringen... dann wären deine fehlermeldungen weg...
Hab's mir fast gedacht
Verfasst: Do 29. Jul 2004, 21:11
von preusss
es wird bei dir nur kontrolliert ob eine größe in der konfiguration definiert wurde, nicht jedoch ob das laden des bildes erfolgreich war.
Soweit das Modul, welches ich hier eingebaut habe. Ich weiß auch nicht mehr, wo ich das Original her hatte. Es ist ein feines Modul und es macht eigentlich alles, was ich damit machen möchte.
du müsstest dies logik noch ins modul bringen... dann wären deine fehlermeldungen weg...
Da muß ich wahrscheinlich passen. Ich bin PHP-Novize. Kannst du mir bitte einen Wink mit dem berühmten Zaunpfahl geben, wo ich das einpassen muß? Besten Dank.
[preusss]
Lösung?
Verfasst: Fr 30. Jul 2004, 14:56
von preusss
Ich habe eine (kleine) Lösung gefunden: Ich plaziere statt einem (normalen) Bild einfach ein 1 x 1 Pixel GIF (farblos) in das vorgesehene Feld. Das tut auch und produziert keine Fehler mehr.
@emergence
Vielen Dank für deine Zeilen. Wenn ich etwas mehr Zeit habe, werde ich das Modul umschreiben/erweitern und hier anbieten
[preusss]
Verfasst: Fr 30. Jul 2004, 21:16
von emergence
gerne...