Grafik mit PHP 8 funktioniert nicht auf bplaced!

Seit vielen Jahren funktionierte mein Web-Projekt auf bplaced unter Verwendung von PHP 5.6 ohne jegliche Beanstandungen.
Jetzt habe ich auf PHP 8, wie empfohlen, umgestellt, habe den Quellcode mühsam überarbeitet und angepasst.
Ergebnis: Alle Funktonen auf den Webseiten funktionieren - außer die Darstellung von Grafiken!
Mit dem Befehl imagecreate wird nur ein leeres Rechteck erzeugt, aber die Daten werden nicht als Diagramm angezeigt.
Ich bin mit meinem Latein am Ende!
Wer kann mir helfen und den entscheidenden Tipp geben?
Gruß
Klaus

Lieber Klaus

kannst Du uns mal den Quelltext als Beispiel nennen? Gerne auch intern unter unter https://my.bplaced.net/support

Hallo Miro,
mein Webprojekt ist doch eine große Datenbank, besteht aus vielen Seiten.
Da weiß ich gar nicht, wo ich anfangen soll bzw. wie ich das machen soll.
Sorry!
Es kommen auch keine Fehlermeldungen, die Diagramme werden einfach nicht gezeichnet!
Gruß
Klaus

Lieber Klaus

hm, Du kannst ja mal ein generiertes Beispiebild nennen, das eben weiss ausfällt.
Da wird bei z.B. PHP-Fehlern sicherlich eine Warnung oder Fehlermeldung ausgegeben, nur werden diese halt nicht ins Bild gezeichnet sondern müssten via error_log-Einstellung in eine Datei zur Einsicht geschrieben werden.

Hallo Miro,
dein Tipp ist lieb gemeint, doch habe ich keine Ahnung, wie ich das mit der error_log-Einstellung machen soll.
Das PHP läuft doch auf dem bplaced-Server… keine Ahnung.
Dann werde ich wohl in Zukunft auf meine Diagramme verzichten müssen. Schade.
Gruß
Klaus

Ich sag doch nenne mal ein Beispiel und wir kümmern uns darum :grin:

Da ich nicht weiß, wie ich meine Grafikdatei hier hochladen kann, habe ich den Code einach mal im Folgenden reinkopiert:

<?php session_start(); /* gif-Grafik definieren */ header('Content-type: image/gif'); /* gif-Grafik erzeugen */ /* Standard-Definitionen für Koordinatensystem mit 4 Quadranten */ $grafik_breit = 600; $grafik_hoch = 310; /* Auflösung der erzeugten Grafik */ $abst_l = 30; $abst_r = 70; $abst_u = 40; $abst_o = 30; /* Randabstände links, rechts, unten, oben*/ $mark = 10; /* Länge der Markierungen auf den Achsen */ $font_achsen = 4; /* Schriftgröße für Achsenbeschriftung */ $font_hoch = imagefontheight($font_achsen); /* die Schrifthöhe */ $yw = 10; /* Anzahl waagerechter Gitterlinien */ $yv = 10; /* Verschiebung der y-Achsen-Beschriftung */ $xv = 2; /* dto. x-Achse, rechts = 1, Mitte = 2 */ $flag_y_achse = 0; /* Wo schneidet die y-Achse die x-Achse? */ $anz_pkt = 4; /* Anzahl Eckpunkte der 3D-Flächen */ $persp_x = 25; $persp_y = 25; /* Faktoren für Perspektive 3D-Flächen */ $font_y = 'Tagessumme in kcal'; /* Darzustellende Messwerte */ $x = $_SESSION['grafikdaten_x']; /* Datumswerte des darzustell. Zeitraums */ $y_fett = $_SESSION['grafikdaten_energie_fett']; /* und die zugehörigen Energiewerte bzgl. */ $y_ew = $_SESSION['grafikdaten_energie_ew']; /* Fett, Eiweiße, Kohlenhydrate, Alkohol */ $y_kh = $_SESSION['grafikdaten_energie_kh']; /* und Gesamtenergie */ $y_alk = $_SESSION['grafikdaten_energie_alk']; $y_gesamt = $_SESSION['grafikdaten_energie_gesamt']; $xu = 0; $xo = count($x); /* Definitionsbereich: von $xu bis $xo */ $yu = 0; $yo = 5500; /* Wertebereich: von $yu bis $yo */ /* Image-Objekt erstellen */ $grafik = imagecreate($grafik_breit, $grafik_hoch); /* Farben festlegen */ $f_body = imagecolorallocate($grafik, 255, 255, 255); /* Farbe Hintergrund */ imagecolortransparent ($grafik, $f_body); /* Hintergrund ist transparent */ $schwarz = imagecolorallocate($grafik, 0, 0, 0); /* Farbe schwarz */ $f_fett = imagecolorallocate($grafik, 255,80,60); /* Farbe für Fette */ $f_fett_3d = imagecolorallocate($grafik, 205,79,65); /* seitliche Farbe für Fette */ $f_kh = imagecolorallocate($grafik, 244,248,99); /* Farbe für Kohlenhydrate */ $f_kh_3d = imagecolorallocate($grafik, 211,214,110); /* seitliche Farbe für Kohlenhydrate */ $f_ew = imagecolorallocate($grafik, 106,174,54); /* Farbe für Eiweiße */ $f_ew_3d = imagecolorallocate($grafik, 98,145,61); /* seitliche Farbe für Eiweiße */ $f_alk = imagecolorallocate($grafik, 112,120,222); /* Farbe für Alkohol */ $f_alk_3d = imagecolorallocate($grafik, 98,102,161); /* seitliche Farbe für Alkohol */ $f_gesamt = imagecolorallocate($grafik, 158,158,158); /* Farbe für gesamte Energie */ $f_gesamt_3d = imagecolorallocate($grafik, 138,138,138); /* seitliche Farbe für gesamte Energie */ $f_grund = imagecolorallocate($grafik, 180, 180, 180); /* Farbe für die Grundfläche */ /* Koordinaten der Eckpunkte der Zeichenfläche berechnen */ $lox = $abst_l; $loy = $abst_o; /* links oben */ $lux = $abst_l; $luy = $grafik_hoch - $abst_u - 1; /* links unten */ $rox = $grafik_breit - $abst_r - 1; $roy = $abst_o; /* rechts oben */ $rux = $grafik_breit - $abst_r - 1; $ruy = $grafik_hoch - $abst_u - 1; /* rechts unten */ /* Gitterlinien zeichnen */ for ($i = $xu; $i <= $xo; $i++) { $x1 = fnx($i); $y1 = fny($yu); $x2 = $x1; $y2 = fny($yo); linie($grau); /* senkrechte Linien */ } for ($i = $yu; $i <= $yo; $i = $i + $yo / $yw) { $x1 = fnx($xu); $y1 = fny($i); $x2 = fnx($xo); $y2 = $y1; linie($grau); /* waagerechte Linien */ } /* Beschriftung der x-Achse */ $y1 = fny(0); $y2 = $y1 + $mark; imagestring($grafik, $font_achsen, fnx($xu) - $abst_l, $y2, $x[$xu], $schwarz); $font_lang = imagefontwidth($font_achsen) * strlen($x[$xo - 1]); imagestring($grafik, $font_achsen, fnx($xo) - $font_lang, $y2, $x[$xo - 1], $schwarz); /* 3D-Ansicht für Säulendiagramm zeichnen */ $koord = array(0, $luy, $rux, $ruy, $rux + $persp_x*2, $ruy - $persp_y*2, $persp_x*2, $luy - $persp_y*2); polygon($f_grund); /* Grundfläche */ for ($i = $xu; $i <= $xo - 1; $i++) { $x3 = fnx($i + 0.7); $y3 = fny(0) - 1; $x4 = fnx($i + 0.7) + $persp_x; $y4 = fny(0) - $persp_y - 1; $x5 = $x4; $y5 = fny($y_gesamt[$i]) - $persp_y; $x6 = $x3; $y6 = fny($y_gesamt[$i]); $koord = array($x3, $y3, $x4, $y4, $x5, $y5, $x6, $y6); if ($y_gesamt[$i] != 0) polygon($f_gesamt_3d); /* seitliche Fläche für Gesamtenergie */ $x7 = fnx($i + 0.2); $y7 = $y6; $x8 = fnx($i + 0.2) + $persp_x; $y8 = $y5; $koord = array($x5, $y5, $x6, $y6, $x7, $y7, $x8, $y8,); if ($y_gesamt[$i] != 0) if ($y_gesamt[$i] > round($y_fett[$i] + $y_ew[$i] + $y_kh[$i] + $y_alk[$i],2)) polygon($f_gesamt_3d); /* obere Fläche für Gesamtenergie */ else if ($y_alk[$i] > 0) polygon($f_alk_3d); /* obere Fläche für Alkohol */ else if ($y_kh[$i] > 0) polygon($f_kh_3d); /* obere Fläche für Kohlenhydrate */ else if ($y_ew[$i] > 0) polygon($f_ew_3d); /* obere Fläche für Eiweiße */ else if ($y_fett[$i] > 0) polygon($f_fett_3d); /* obere Fläche für Fette */ $y5 = fny($y_fett[$i]) - $persp_y; $y6 = fny($y_fett[$i]); $koord = array($x3, $y3, $x4, $y4, $x5, $y5, $x6, $y6); if ($y_fett[$i] != 0) polygon($f_fett_3d); /* seitliche Fläche für Fette */ $y3 = $y6; $y4 = $y5; $y5 = fny($y_fett[$i] + $y_ew[$i]) - $persp_y; $y6 = fny($y_fett[$i] + $y_ew[$i]); $koord = array($x3, $y3, $x4, $y4, $x5, $y5, $x6, $y6); if ($y_ew[$i] != 0) polygon($f_ew_3d); /* seitliche Fläche für Eiweiße */ $y3 = $y6; $y4 = $y5; $y5 = fny($y_fett[$i] + $y_ew[$i] + $y_kh[$i]) - $persp_y; $y6 = fny($y_fett[$i] + $y_ew[$i] + $y_kh[$i]); $koord = array($x3, $y3, $x4, $y4, $x5, $y5, $x6, $y6); if ($y_kh[$i] != 0) polygon($f_kh_3d); /* seitliche Fläche für Kohlenhydrate */ $y3 = $y6; $y4 = $y5; $y5 = fny($y_fett[$i] + $y_ew[$i] + $y_kh[$i] + $y_alk[$i]) - $persp_y; $y6 = fny($y_fett[$i] + $y_ew[$i] + $y_kh[$i] + $y_alk[$i]); $koord = array($x3, $y3, $x4, $y4, $x5, $y5, $x6, $y6); if ($y_alk[$i] != 0) polygon($f_alk_3d); /* seitliche Fläche für Alkohol */ } /* Säulendiagramm zeichnen */ for ($i = $xu; $i <= $xo - 1; $i++) { $x1 = fnx($i + 0.2); $y1 = fny($y_gesamt[$i]); $x2 = fnx($i + 0.7); $y2 = fny(0) - 1; if ($y_gesamt[$i] != 0) rechteck($f_gesamt); $y1 = fny($y_fett[$i]); if ($y_fett[$i] != 0) rechteck($f_fett); $y2 = $y1; $y1 = fny($y_fett[$i] + $y_ew[$i]); if ($y_ew[$i] != 0) rechteck($f_ew); $y2 = $y1; $y1 = fny($y_fett[$i] + $y_ew[$i] + $y_kh[$i]); if ($y_kh[$i] != 0) rechteck($f_kh); $y2 = $y1; $y1 = fny($y_fett[$i] + $y_ew[$i] + $y_kh[$i] + $y_alk[$i]); if ($y_alk[$i] != 0) rechteck($f_alk); } /* Grafik ausgeben und aus dem Speicher entfernen */ imagegif($grafik); imagedestroy($grafik); /* ------------------------------------------- Funktionen ------------------------------------------------------ */ function polygon($farbe) { global $grafik, $koord, $anz_pkt; imagefilledpolygon($grafik, $koord, $anz_pkt, $farbe); return; } function rechteck($farbe) { global $grafik, $x1, $y1, $x2, $y2; imagefilledrectangle($grafik, $x1, $y1, $x2, $y2, $farbe); return; } function linie($farbe) { global $grafik, $x1, $y1, $x2, $y2; imageline($grafik, $x1, $y1, $x2, $y2, $farbe); return; } function fnx($x) /* Transformation der x-Koordinaten */ { global $xu, $xo, $rux, $abst_l; $wert = ($x - $xu)/ ($xo - $xu) * ($rux - $abst_l) + $abst_l; return $wert; } function fny($y) /* Transformation der y-Koordinaten */ { global $yu, $yo, $ruy, $abst_u, $abst_o; $wert = ($yo - $y) / ($yo - $yu) * ($ruy - $abst_u) + $abst_o; return $wert; } ?>