FormBuilder gebrochen im WSC 5.3

  • Betroffene Version
    WoltLab Suite 5.3
    Betroffene App
    WoltLab Suite Core

    Seit dem letzten WSC 5.3 Update gibt es in meine Endanwendungen (Lexikon, Marktplatz, Filebase) Fehler verursacht durch den FormBuilder. Was ich bis jetzt gesehen habe, dürfte der Fehler nur im WSC 5.3.13 auftreten. Reproduzierbar in den entsprechenden Anwendungen, wenn ein neuer Eintrag erstellt werden soll.

  • Der selbe Fehler tritt unter WSC 5.3.13 auch im Ticketsystem von Darkwood.Design beim TicketAdd Formular auf.

    Aufgerufene URL
    GET /support/ticket-add/
    Referrer
    https://<redacted>/support/
    WoltLab Suite
    5.3.13
    PHP
    7.4.16
    Fehlermeldung
    Undefined index: 3d43f83f21bf57577a500f1dc7ab075437aafd1d
    Art
    wcf\system\exception\ErrorException
    Datei (Zeile)
    /var/www/<redacted>/html/lib/system/WCF.class.php (349)
    Stacktrace
    1. /var/www/<redacted>/html/templates/compiled/4_wcf_2___formContainer.php (52): wcf\system\WCF::handleError(…)
    2. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (334): include(…)
    3. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    4. /var/www/<redacted>/html/lib/system/form/builder/container/FormContainer.class.php (58): wcf\system\template\TemplateEngine->fetch(…)
    5. /var/www/<redacted>/html/templates/compiled/4_wcf_2___form.php (94): wcf\system\form\builder\container\FormContainer->getHtml(…)
    6. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (334): include(…)
    7. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    8. /var/www/<redacted>/html/lib/system/form/builder/FormDocument.class.php (416): wcf\system\template\TemplateEngine->fetch(…)
    9. /var/www/<redacted>/html/templates/compiled/4_ticketsystem_2_ticketAdd.php (1903): wcf\system\form\builder\FormDocument->getHtml(…)
    10. /var/www/<redacted>/html/lib/system/template/TemplateEngine.class.php (334): include(…)
    11. /var/www/<redacted>/html/lib/page/AbstractPage.class.php (323): wcf\system\template\TemplateEngine->display(…)
    12. /var/www/<redacted>/html/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    13. /var/www/<redacted>/html/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    14. /var/www/<redacted>/html/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    15. /var/www/<redacted>/html/support/index.php (10): wcf\system\request\RequestHandler->handle(…)
  • Alexander Ebert 4. September 2021 um 21:41

    Hat das Label Bestätigt hinzugefügt.
  • Merkwürdig, wenn ich auf PHP 8 umstelle, kommt beim Editieren oder neuen Eintrag folgender Fehler:


    Eintrag erstellen:

    System Information

    • PHP Version:

      8.0.9

    • WoltLab Suite Core:

      5.3.13

    • Peak Memory Usage:

      13.296/512 MiB

    • Request URI:

      GET /core/lexicon/entry-add/?categoryID=0

    Error

    • Error Type:

      wcf\system\exception\ErrorException

    • Error Message:

      Undefined array key "018cfb526ffacc60de3674332791fe756a970719"

    • File:

      */lib/system/WCF.class.php (349)

    • Stack Trace:
      • #0 */templates/compiled/2_wcf_1___formContainer.php (52):
      • wcf\system\WCF::handleError()
      • #1 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___formContainer.php')
      • #2 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #3 */lib/system/form/builder/container/FormContainer.class.php (58):
      • wcf\system\template\TemplateEngine->fetch()
      • #4 */templates/compiled/2_wcf_1___form.php (94):
      • wcf\system\form\builder\container\FormContainer->getHtml()
      • #5 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___form.php')
      • #6 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #7 */lib/system/form/builder/FormDocument.class.php (416):
      • wcf\system\template\TemplateEngine->fetch()
      • #8 */templates/compiled/2_lexicon_1_entryAdd.php (2036):
      • wcf\system\form\builder\FormDocument->getHtml()
      • #9 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_lexicon_1_entryAdd.php')
      • #10 */lib/page/AbstractPage.class.php (323):
      • wcf\system\template\TemplateEngine->display()
      • #11 */lib/page/AbstractPage.class.php (114):
      • wcf\page\AbstractPage->show()
      • #12 */lib/system/request/Request.class.php (83):
      • wcf\page\AbstractPage->__run()
      • #13 */lib/system/request/RequestHandler.class.php (107):
      • wcf\system\request\Request->execute()
      • #14 */lexicon/index.php (11):
      • wcf\system\request\RequestHandler->handle()

    Eintrag editieren:

    System Information

    • PHP Version:

      8.0.9

    • WoltLab Suite Core:

      5.3.13

    • Peak Memory Usage:

      13.037/512 MiB

    • Request URI:

      GET /core/lexicon/entry-edit/26/

    Error

    • Error Type:

      wcf\system\exception\ErrorException

    • Error Message:

      Undefined array key "018cfb526ffacc60de3674332791fe756a970719"

    • File:

      */lib/system/WCF.class.php (349)

    • Stack Trace:
      • #0 */templates/compiled/2_wcf_1___formContainer.php (52):
      • wcf\system\WCF::handleError()
      • #1 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___formContainer.php')
      • #2 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #3 */lib/system/form/builder/container/FormContainer.class.php (58):
      • wcf\system\template\TemplateEngine->fetch()
      • #4 */templates/compiled/2_wcf_1___form.php (94):
      • wcf\system\form\builder\container\FormContainer->getHtml()
      • #5 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_wcf_1___form.php')
      • #6 */lib/system/template/TemplateEngine.class.php (562):
      • wcf\system\template\TemplateEngine->display()
      • #7 */lib/system/form/builder/FormDocument.class.php (416):
      • wcf\system\template\TemplateEngine->fetch()
      • #8 */templates/compiled/2_lexicon_1_entryAdd.php (2036):
      • wcf\system\form\builder\FormDocument->getHtml()
      • #9 */lib/system/template/TemplateEngine.class.php (334):
      • include('*/templates/compiled/2_lexicon_1_entryAdd.php')
      • #10 */lib/page/AbstractPage.class.php (323):
      • wcf\system\template\TemplateEngine->display()
      • #11 */lib/page/AbstractPage.class.php (114):
      • wcf\page\AbstractPage->show()
      • #12 */lib/system/request/Request.class.php (83):
      • wcf\page\AbstractPage->__run()
      • #13 */lib/system/request/RequestHandler.class.php (107):
      • wcf\system\request\Request->execute()
      • #14 */lexicon/index.php (11):
      • wcf\system\request\RequestHandler->handle()


    Stelle ich hingegen auf PHP 7.4, funktioniert es wieder.

  • Schließe mich an, Forum ist nicht mehr nutzbar in der jetzigen Konstellation. Ich hoffe auf einen schnellen Fix.. Bzw. einen Lösungsvorschlag.

    Aufgerufene URL
    GET /wsif/entry-edit/677-ts2017-raildriver-and-joystick-interface/
    Referrer
    WoltLab Suite
    5.3.13
    PHP
    7.4.23
    Fehlermeldung
    Undefined index: c53fed0d021cb84025a30e7c7f14c6ce093455d0
    Art
    wcf\system\exception\ErrorException
    Datei (Zeile)
    /var/www/clients/client1/web5/web/wcf/lib/system/WCF.class.php (349)
    Stacktrace
    1. /var/www/clients/client1/web5/web/wcf/templates/compiled/11_wcf_1___formContainer.php (52): wcf\system\WCF::handleError(…)
    2. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (334): include(…)
    3. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    4. /var/www/clients/client1/web5/web/wcf/lib/system/form/builder/container/FormContainer.class.php (58): wcf\system\template\TemplateEngine->fetch(…)
    5. /var/www/clients/client1/web5/web/wcf/templates/compiled/11_wcf_1___form.php (94): wcf\system\form\builder\container\FormContainer->getHtml(…)
    6. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (334): include(…)
    7. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (562): wcf\system\template\TemplateEngine->display(…)
    8. /var/www/clients/client1/web5/web/wcf/lib/system/form/builder/FormDocument.class.php (416): wcf\system\template\TemplateEngine->fetch(…)
    9. /var/www/clients/client1/web5/web/wcf/templates/compiled/11_filebase_1_entryAdd.php (3953): wcf\system\form\builder\FormDocument->getHtml(…)
    10. /var/www/clients/client1/web5/web/wcf/lib/system/template/TemplateEngine.class.php (334): include(…)
    11. /var/www/clients/client1/web5/web/wcf/lib/page/AbstractPage.class.php (323): wcf\system\template\TemplateEngine->display(…)
    12. /var/www/clients/client1/web5/web/wcf/lib/page/AbstractPage.class.php (114): wcf\page\AbstractPage->show(…)
    13. /var/www/clients/client1/web5/web/wcf/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    14. /var/www/clients/client1/web5/web/wcf/lib/system/request/RequestHandler.class.php (107): wcf\system\request\Request->execute(…)
    15. /var/www/clients/client1/web5/web/wsif/index.php (10): wcf\system\request\RequestHandler->handle(…)
  • Ich habe mir das Problem nicht näher angesehen oder es getestet, aber es wäre einen Versuch wert folgenden Commit temporär rückgängig zu machen, sofern die Nebeneffekte vertretbar sind:

    Fix `{foreach}` loops when the to-be-iterated value is empty · WoltLab/WCF@c95e8ca
    The restoring of the `item` value failed, because the necessary data in `foreachVars` was only being filled when the `foreach()` loop was actually entered.…
    github.com
  • Wenn der Fix heute sowieso kommt, kann ich gerne noch warten..

    Damit ist nicht zu rechnen: https://github.com/WoltLab/WCF/commits/5.3

    Zumindest öffentlich ist bisher noch kein Fix dafür verfügbar.

    das dort oben ist nicht der richtige Commit.

    Das ist der einzige Commit seit 5.3.12, der direkt in Relation zur Stelle des Fehlers steht. Auch, wenn ich vermute, dass da irgendein Feld dazwischen grätscht, ist es vielleicht eine temporäre Möglichkeit, bis ihr das behoben habt. Eventuell kann VieCode später evaluieren, ob das den oben stehenden Bug für's erste umgeht*.

    Du kannst natürlich auch gerne sagen, welcher Commit der Richtige wäre oder wie der Fix schlussendlich aussehen wird. ;)

    * ich spreche explizit von umgehen, nicht von "beheben".

  • Alexander Ebert 8. September 2021 um 13:59

    Hat das Label 5.3.14 hinzugefügt.
  • Alexander Ebert 8. September 2021 um 13:59

    Hat das Label von Bestätigt auf Behoben geändert.
    • Offizieller Beitrag

    Das ist der einzige Commit seit 5.3.12, der direkt in Relation zur Stelle des Fehlers steht.

    Das Problem ist komplexer als das. Es gibt zwei verschiedene Bugs, der eine existiert sogar bereits seit WCF 1.x. Durch die Korrektur des ersten Bugs wurde der 2. Bug überhaupt erst sichtbar. Den Fix für den ersten Bug rückgängig zu machen umgeht zwar das Problem vom zweiten Bug, aber dann hat man den ersten Bug wieder in der Backe. Beides betrifft direkt den Form-Builder, man hat also die Wahl zwischen Pest und Cholera.

    Die Lösung ist also den 2. Bug ebenfalls zu korrigieren, denn dieser ist das eigentliche Problem, was der Behebung entgegen steht. Aber gerade hier sieht man, dass selbst erfahrene Entwickler auf Basis der reinen Commits nicht immer einwandfrei sagen können, wie diese im Zusammenhang stehen. Genau deshalb geben wir nur selten vorab Informationen zu einer manuellen Korrektur heraus, eben weil es nicht immer trivial ist.

  • :D

    Wer rechnet denn mit sowas? :P

    GitHub Actions scheißt ordentlich rein. ^^

    Den Fix für den ersten Bug rückgängig zu machen umgeht zwar das Problem vom zweiten Bug, aber dann hat man den ersten Bug wieder in der Backe. Beides betrifft direkt den Form-Builder, man hat also die Wahl zwischen Pest und Cholera.

    Das ist logisch; es ist leider eine sehr zentrale Stelle. Deswegen hätte man abwägen müssen:

    sofern die Nebeneffekte vertretbar sind

    Aber gerade hier sieht man, dass selbst erfahrene Entwickler auf Basis der reinen Commits nicht immer einwandfrei sagen können, wie diese im Zusammenhang stehen.

    Ja, der Punkt ist definitiv unlustig; ich hatte wie oben gesagt die Anfangs-Vermutung, dass da irgendein Feld rein schießt, ab da war es mir dann zu viel Brainfuck zwischen PHP und Smarty hin und her zu springen. ^^

Jetzt mitmachen!

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