Ergebnis 1 bis 9 von 9

Thema: PHP Fatal error bei nicht gefundenen Bildern

  1. #1
    Contao-Nutzer
    Registriert seit
    24.07.2015.
    Beiträge
    15

    Frage PHP Fatal error bei nicht gefundenen Bildern

    Wenn auf ein Bild verwiesen wird, welches nicht existiert, führt das in Contao v3.5.2 zu einem fatal error:
    Code:
    [31-Aug-2015 06:47:44 UTC] PHP Fatal error: Uncaught exception 'Exception' with message 'Directory "system/themes/flexible/images/" is not a file' thrown in E:\contao\system\modules\core\library\Contao\File.php on line 123
    #0 E:\contao\system\modules\core\library\Contao\Image.php(835): Contao\File->__construct('system/themes/f...', true)
    #1 E:\contao\system\modules\core\library\Contao\Controller.php(1946): Contao\Image::getHtml(NULL, '', '')
    #2 E:\contao\templates\dma_eg_banner.html5(2): Contao\Controller::generateImage(NULL)
    #3 E:\contao\system\modules\core\library\Contao\BaseTemplate.php(88): include('E:\contao\templ...')
    #4 E:\contao\system\modules\core\library\Contao\Template.php(277): Contao\BaseTemplate->parse()
    #5 E:\contao\system\modules\core\classes\FrontendTemplate.php(46): Contao\Template->parse()
    #6 E:\contao\system\modules\dma_elementgenerator\DMAElementGenerator.php(715): Contao\FrontendTemplate->parse()
    #7 E:\contao\system\modules\dma_elementgenerator\DMAElementGenerator.php(48): DMAElementGenerator->compile(Object(DMAElementGeneratorContent))
    #8 E:\contao\system\modules\dma_elementgenerator\DMAElementGeneratorContent.php(47): DMAElementGenerator->generate(Object(DMAElementGeneratorContent))
    #9 E:\contao\system\modules\core\elements\ContentElement.php(260): DMAElementGeneratorContent->compile()
    #10 E:\contao\system\modules\core\library\Contao\Controller.php(476): Contao\ContentElement->generate()
    #11 E:\contao\system\modules\core\modules\ModuleArticle.php(213): Contao\Controller::getContentElement(Object(Contao\ContentModel), 'Banner')
    #12 E:\contao\system\modules\core\modules\Module.php(282): Contao\ModuleArticle->compile()
    #13 E:\contao\system\modules\core\modules\ModuleArticle.php(67): Contao\Module->generate()
    #14 E:\contao\system\modules\core\library\Contao\Controller.php(409): Contao\ModuleArticle->generate(false)
    #15 E:\contao\system\modules\core\library\Contao\Controller.php(269): Contao\Controller::getArticle(Object(Contao\ArticleModel), false, false, 'Banner')
    #16 E:\contao\system\modules\core\pages\PageRegular.php(137): Contao\Controller::getFrontendModule('0', 'Banner')
    #17 E:\contao\system\modules\core\controllers\FrontendIndex.php(267): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #18 E:\contao\index.php(20): Contao\FrontendIndex->run()
    In der Version 3.2.20 war das noch nicht der Fall. Es wurde stattdessen kein Bild bzw. ein leeres Bild angezeigt. Dieses Verhalten war m.E. wesentlich praktischer - sowohl zur Fehlersuche als auch für den Website-Besucher. Daher meine Frage: Ist das ein Bug in der Versio 3.5.2, der behoben werden sollte, oder ist dieses Verhalten beabsichtigt?

    Viele Grüße
    fuggi

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.124
    Partner-ID
    10107

    Standard

    Derartige Fragen sind auf GitHub besser aufgehoben.

  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Sieht mir fast nach einem Problem mit dem dma_elementgenerator aus, denn der lässt das FE Template parsen wo es zu dem Fehler kommt.
    (durch den unsinnigen Aufruf von Controller::generateImage(NULL), ohne Bild als Parameter nix mit Bild anzeigen)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer
    Registriert seit
    24.07.2015.
    Beiträge
    15

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Derartige Fragen sind auf GitHub besser aufgehoben.
    Den Gedanken hatte ich auch. Danke für die Bestätigung!

    Zitat Zitat von BugBuster Beitrag anzeigen
    Sieht mir fast nach einem Problem mit dem dma_elementgenerator aus, denn der lässt das FE Template parsen wo es zu dem Fehler kommt.
    (durch den unsinnigen Aufruf von Controller::generateImage(NULL), ohne Bild als Parameter nix mit Bild anzeigen)
    Es passiert auch im BE. Der Fehler tritt bzw. trat auf, weil sich die Struktur bzw. der Inhalt der Template-Variablen geändert hat, weshalb statt der rel. URL des Bildes NULL übergeben wurde. Aber solch einen Fehler in jedem Template abzufangen, halte ich unangemessen. Wesentlich effizienter und sinnvoller ist m.E., solche Fehler zentral abzufangen und zu behandeln (bspw. bei Image.php(835): Contao\File->__construct).

  5. #5
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von fuggi Beitrag anzeigen
    Der Fehler tritt bzw. trat auf, weil sich die Struktur bzw. der Inhalt der Template-Variablen geändert hat,
    Was hat sich denn da geändert? Ist mir bisher nicht aufgefallen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.124
    Partner-ID
    10107

    Standard

    Nein, scheint tatsächlich ein Fehler vom DMA Element Generator zu sein. Bzw. eigentlich scheint es sich bei dma_eg_banner.html5 um ein Template von dir selbst zu handeln, oder nicht? Wie sieht dieses Template aus?


    Zitat Zitat von fuggi Beitrag anzeigen
    Es passiert auch im BE. Der Fehler tritt bzw. trat auf, weil sich die Struktur bzw. der Inhalt der Template-Variablen geändert hat, weshalb statt der rel. URL des Bildes NULL übergeben wurde. Aber solch einen Fehler in jedem Template abzufangen, halte ich unangemessen. Wesentlich effizienter und sinnvoller ist m.E., solche Fehler zentral abzufangen und zu behandeln (bspw. bei Image.php(835): Contao\File->__construct).
    Geändert hat sich da wohl nichts. Außerdem überprüfen immer die jeweiligen Module, ob eine Datei da ist oder nicht. zB wird in den News Modulen die Variable "addImage" nur dann auf true gesetzt, wenn das Bild auch tatsächlich vorhanden ist.

  7. #7
    Contao-Nutzer
    Registriert seit
    24.07.2015.
    Beiträge
    15

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Was hat sich denn da geändert? Ist mir bisher nicht aufgefallen.
    Geändert hat sich anscheinend, dass in $this->data["picture"]["value"] nicht mehr zwangsläufig die rel. URL zu einem Bild mit dem Name picture steht, sondern dieses Feld anscheinend auch einen Array für alle Bilder enthalten kann.

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, scheint tatsächlich ein Fehler vom DMA Element Generator zu sein. Bzw. eigentlich scheint es sich bei dma_eg_banner.html5 um ein Template von dir selbst zu handeln, oder nicht? Wie sieht dieses Template aus?
    Nicht von mir, aber ich muss damit jetzt arbeiten. Der Aufruf im Template sah so aus:
    PHP-Code:
    $this->data["picture"]["value"
    Und sieht jetzt so aus:
    PHP-Code:
    $this->data["picture"]["value"][0]["src"
    Zitat Zitat von Spooky Beitrag anzeigen
    Geändert hat sich da wohl nichts. Außerdem überprüfen immer die jeweiligen Module, ob eine Datei da ist oder nicht. zB wird in den News Modulen die Variable "addImage" nur dann auf true gesetzt, wenn das Bild auch tatsächlich vorhanden ist.
    Dann überprüft dass der DMA Element Generator an dieser stelle wohl nicht, oder?

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.124
    Partner-ID
    10107

    Standard

    Zitat Zitat von fuggi Beitrag anzeigen
    Nicht von mir, aber ich muss damit jetzt arbeiten.
    Naja, ich meinte damit eher: es ist nicht ein Template, das von DMA EG selbst kommt. Es befindet sich im Ordner "/templates" und hat den Namen dma_eg_banner - ein solches Template existiert von Haus aus nicht. Daher wäre der komplette Inhalt des Templates interessant.


    Zitat Zitat von fuggi Beitrag anzeigen
    Dann überprüft dass der DMA Element Generator an dieser stelle wohl nicht, oder?
    Wahrscheinlich nicht. Aber: dies hier ist ein Spezialfall, weil es sich um Custom Elements handelt. Hier musst du potentiell immer selbst im Template überprüfen, ob die Daten zu einer von dir definierten Variable auch überhaupt stimmen. Wäre bspw. bei den Rocksolid Custom Elements auch nicht anders. Letztere stellt im Prinzip auch nur die Möglichkeit bereit, Daten für Custom Elements im Backend einzugeben und über ein Template selbst auszugeben - ob die Daten Sinn machen muss man aber selbst überprüfen.

  9. #9
    Contao-Nutzer
    Registriert seit
    24.07.2015.
    Beiträge
    15

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Naja, ich meinte damit eher: es ist nicht ein Template, das von DMA EG selbst kommt.
    Ist klar. Ich hatte den hinter meiner Antwort vergessen.

    Zitat Zitat von Spooky Beitrag anzeigen
    Wahrscheinlich nicht. Aber: dies hier ist ein Spezialfall, weil es sich um Custom Elements handelt. Hier musst du potentiell immer selbst im Template überprüfen, ob die Daten zu einer von dir definierten Variable auch überhaupt stimmen. Wäre bspw. bei den Rocksolid Custom Elements auch nicht anders. Letztere stellt im Prinzip auch nur die Möglichkeit bereit, Daten für Custom Elements im Backend einzugeben und über ein Template selbst auszugeben - ob die Daten Sinn machen muss man aber selbst überprüfen.
    Aha. Gut zu wissen. Das geschah bisher bei keinem der eigenen Templates.

    Danke für eure Hilfe!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •