GdImage Fehler mit PHP 8

  • Ich benutze folgenden Script:

    Code
    $im = @imagecreatefromjpeg(JPATH_ROOT . '/images/example/' . $file);
    $small = imagecreatetruecolor($sizemin[0], $sizemin[1]);
    @ImageCopyResampled($small, $im, 0, 0, 0, 0, $sizemin[0], $sizemin[1], $size[0], $size[1]);
    @ImageDestroy($im);

    Wenn ich auf PHP 8 umstelle bekomme ich folgende Fehlermeldung:


    "imagecopyresampled(): Argument #2 ($src_image) must be of type GdImage, bool given"


    Was läuft da schief? Danke für jeden Tipp.

  • Nicht klar ist mir, was die Ursache dafür ist

    Das kann doch nur an

    Code
    $im = @imagecreatefromjpeg(JPATH_ROOT . '/images/example/' . $file);

    liegen.


    Man sollte Fehler mit einem @ vor einer Funktion nicht unterdrücken, zumindest nicht, solange ein Script fertig gestellt wurde. Zudem sollte man das Error-Reporting hochdrehen. Siehe auch


    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
  • Zitat

    Das kann doch nur an


    Code

    1. $im = @imagecreatefromjpeg(JPATH_ROOT . '/images/example/' . $file);


    Auch das ist und war mir völlig klar und logisch. Die Frage ist ja, was denn da falsch sei. Der Klammerausdruck ist korrekt. Auch wenn ich die Adresse aussschreibe kommt der Fehler immer noch.

  • Besten Dank für dies Hinweis!

    allow_url_fopen ist tatsächlich nicht aktiviert. Ich möchte dies auch nicht tun, da es ja nur eine Awendung betrifft.
    Gibt es eine Alternative?

  • Zitat

    Klar, weg von der Url zu einem absoluten oder relativen Pfad

    Hatte ich auch probiert - leider ohne Erfolg. Der Fehler kommt übrigens auch, wenn ich allow_url_fopen aktiviere.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!