Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: SHIPPING_MAX_WEIGHT erzeugt weiße Seite

    Schreinermeister

    • Fördermitglied
    • Beiträge: 415
    • Geschlecht:
    SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    am: 01. September 2022, 12:15:35
    Hallo zusammen,

    modified eCommerce Shopsoftware v2.0.7.2 rev 14622 dated: 2022-07-04
    Datenbank Version: "MOD_2.0.7.2"

    bin eben auf einen Fehler gestoßen (worden).

    Ich nutze bei den Produkten das Artikelgewicht nicht, habe aber dennoch bei einigen wenigen das Gewicht hinterlegt.
    Bei den Versnd-Optionen habe / hatte ich keine Max. - Gewichte hinterlegt.
    Wenn nun einer der betroffenen Artikel in den Warenkorb gelegt wird, erzeugt der Aufruf des Warenkorbs nur eine weiße Seite.

    [2022-09-01 11:37:21] [error] [modified] [pid:4137567] Division by zero in File: /var/www/clients/client79/web189/web/includes/classes/shipping.php on Line: 119 {} {}

    Code: PHP  [Auswählen]
    if ((double)SHIPPING_MAX_WEIGHT != '' && $shipping_weight > (double)SHIPPING_MAX_WEIGHT) { // Split into many boxes
              $shipping_num_boxes = ceil($shipping_weight / (double)SHIPPING_MAX_WEIGHT);
              $shipping_weight = $shipping_weight / $shipping_num_boxes;
            }

    irgendwie scheint   if ((double)SHIPPING_MAX_WEIGHT != ''  nicht zu greifen...

    Gruß Chris

    Linkback: https://www.modified-shop.org/forum/index.php?topic=42544.0
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #1 am: 02. September 2022, 00:20:14
    Hallo Chris,

    entweder du trägst im Admin unter "Konfiguration" -> "Versand Optionen" bei "Maximalgewicht, das als ein Paket versendet werden kann" einen Wert grösser als Null ein, oder du änderst in der Datei /includes/classes/shipping.php die Zeile 116

    Code: PHP  [Auswählen]
            if ((double)SHIPPING_MAX_WEIGHT != '' && $shipping_weight > (double)SHIPPING_MAX_WEIGHT) { // Split into many boxes

     so ab.
    Code: PHP  [Auswählen]
            if ((double)SHIPPING_MAX_WEIGHT != 0 && $shipping_weight > (double)SHIPPING_MAX_WEIGHT) { // Split into many boxes

    Gruss
    Hanspeter

    Schreinermeister

    • Fördermitglied
    • Beiträge: 415
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #2 am: 02. September 2022, 17:05:37
    Hallo HansPeter,

    mit  0  anstatt '' funktionierts, egal ob ein SHIPPING_MAX_WEIGHT eingetragen ist oder nicht. :thumbs:

    Ev. in der nächsten Version übernehmen?

    Gruß Chris

    karsta.de

    • Experte
    • Beiträge: 3.156
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #3 am: 02. September 2022, 17:53:47
    Eigentlich dachte ich, dass dieses Problem schon behoben wäre (Ticket #2091).

    BG Karsta

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #4 am: 03. September 2022, 00:39:03
    Ist es ja auch, wenn du in die /admin/includes/configuration_limits.php  schaust.
    Problem dabei ist, daß wenn man die betroffene Konfigurations-Seite nie aufgerufen und gespeichert hat, das gesetzte Limit nicht greift.
    Heißt imho, daß dieser Code aus der /includes/classes/shipping.php
    Code: PHP  [Auswählen]
    if ((double)SHIPPING_MAX_WEIGHT != '' && $shipping_weight > (double)SHIPPING_MAX_WEIGHT) { // Split into many boxes

    am Besten so geändert werden sollte:
    Code: PHP  [Auswählen]
    if (SHIPPING_MAX_WEIGHT > 0 && $shipping_weight > (double)SHIPPING_MAX_WEIGHT) { // Split into many boxes

    wobei der double-Cast eigtl. unnötig ist.
    *EDIT*
    Naja, nicht wirklich, denn irgendein Hennes könnte in das Feld ja auch einen Nicht-Int-oder-Float-Wert eingeben.
    Das ist das historisch begründete Problem, daß configuration-Werte nicht "per default" ge-cast-et sind, weil es eben in der DB Felder vom Typ text oder varchar sind.
    *END_EDIT*

    Gruß,
    noRiddle

    *NACHTRAG*
    Habe dazu im Ticket etwas vermerkt.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #5 am: 03. September 2022, 23:16:39
    Eigentlich dachte ich, dass dieses Problem schon behoben wäre (Ticket #2091).
    [...]

    Also, in der Datei \admin\includes\configuration_limits.php ist folgende Zeile enthalten,

    Code: PHP  [Auswählen]
    $value_limits['SHIPPING_BOX_WEIGHT'] = array('min' => 0);

    aber sie scheint nicht zu greifen, will heissen, in der Konfiguration kann ich den Wert bei "Maximalgewicht, das als ein Paket versendet werden kann" auch leeren und speichern, ohne dass ich eine Warnung angezeigt bekomme. Im Warenkorb erhalte ich dann, genau wie der Schreinermeister, eine weisse Seite. Trage ich bei "Maximalgewicht, das als ein Paket versendet werden kann" eine 0 ein erhalte ich auch eine weisse Seite im Warenkorb, das ist aber auch nicht verwunderlich, denn auch hier versucht PHP eine "Division by zero" durchzuführen, was ja, da das Ergebnis nicht definiert ist, zu einem Error führt.

    Shop-Version 2.0.7.0
    PHP-Version 8.1.9

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #6 am: 04. September 2022, 10:23:31
    Der Wert der Konstanten SHIPPING_BOX_WEIGHT ist nicht "Maximalgewicht, das als ein Paket versendet werden kann"
    sondern "Paketleergewicht".
    Wenn man diesen Wert leert bekommt man diese Fehlermeldung:
    "Paketleergewicht" FEHLER: Bitte nur Zahlen eingeben! Eingabe 0 wurde ignoriert!

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #7 am: 04. September 2022, 12:03:06
    Aha, stimmt, aber dann ist die Antwort #3 von Karsta nicht korrekt, denn das Ticket #2091 behebt das Problem des TE überhaupt nicht, und der Verweis  (Das muß wohl nochmal genauer angeschaut werden. Siehe bitte: SHIPPING_MAX_WEIGHT erzeugt weiße Seite) im Ticket #2091 auf diesen Thread hier sollte auch nicht sein.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #8 am: 04. September 2022, 14:08:47
    Haha, au weia, da ist einiges durcheinandergekommen und ich hab's beim Überfliegen nicht gesehen und ebenfalls die beiden Konstanten vertauscht.
    (BOX und MAX inmitten des Begriffes in welchem die anderen beiden Teile gleich lauten kann man auch beim drüberlesen schnell verwechseln.)

    Trotzdem ist das Ticket das richtige und mein Verweis auf diesen Thread richtig.
    Karsta schreibt im Ticket
    Zitat von: Ticket #2091
    Wird PHP8 verwendet, muss im Admin > Konfiguration > Versandoptionen > Paketleergewicht mindestens eine Null drin stehen, da es ansonsten zur weißen Seite im Warenkorb kommt.
    Ist auch im dev-Shop nachstellbar.

    Dort hat sie sich vertan, denn es wird nirgends durch das Paketleergewicht (= SHIPPING_BOX_WEIGHT) geteilt sondern durch das Max-Paketgewicht (= (SHIPPING_MAX_WEIGHT)
    Im Ticket hat Tomcraft dann, dies nicht bemerkt habend, das Configuration-Limit für SHIPPING_BOX_WEIGHT als Lösung vorgeschlagen und das wurde dann fälschlicherweise in die /admin/includes/configuration_limits.php  übernommen, wo meine Wenigkeit es beim Nachschauen wieder mit SHIPPING_MAX_WEIGHT verwechselt hat, weswegen ich auf Karstas Frage behauptete es sei ja auch gelöst. Später ist dann dir, hpzeller, das Vertauschen auch nicht aufgefallen
    Mehr Durcheinander geht kaum, aber sehr lustig.

    Also, es muß noch mal genauer draufgechaut werden, indem entweder auch für SHIPPING_MAX_WEIGHT ein Limit hinterlegt wird oder das fälschlich gesetzte Limit für SHIPPING_BOX_WEIGHT mit dem richtigen für SHIPPING_MAX_WEIGHT ersetzt wird.
    Außerdem denke ich, daß die von mir vorgeschlagene Änderung in der includes/classes/shipping.php gemacht werden sollte:
    Code: PHP  [Auswählen]
    if (SHIPPING_MAX_WEIGHT > 0 && $shipping_weight > (double)SHIPPING_MAX_WEIGHT) { // Split into many boxes

    Gruß,
    noRiddle

    karsta.de

    • Experte
    • Beiträge: 3.156
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #9 am: 04. September 2022, 15:02:57
    Ok, wahrscheinlich habe ich hier nicht korrekt gelesen, dass es in diesem Thema eigentlich um SHIPPING_MAX_WEIGHT geht.
    In dem von mir angelegten Ticket ging es um Shop-Version 2.0.6.0, PHP 8 und definitiv um SHIPPING_BOX_WEIGHT.
    Und dafür wurden in der Shop-Version 2.0.7.0 die Dateien:
    shoproot\includes\shipping_estimate.php
    shoproot\includes\modules\order_details_cart.php

    jeweils geändert und die Konstante SHIPPING_BOX_WEIGHT mit (double) versehen.

    Aber gut, dass das dann noch einmal auf den Tisch kommt, wenn da noch etwas im argen liegt.

    BG Karsta

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: SHIPPING_MAX_WEIGHT erzeugt weiße Seite
    Antwort #10 am: 05. September 2022, 00:27:46
    Aha, also noch anders als ich dachte.
    Also ohne den Double-Cast auf SHIPPING_BOX_WEIGHT gab es eine weiße Seite ?
    Weißt du warum ? (abgesehen, daß der Cast ohnehin sein sollte, da es ja eine Config-Konstante ist in die man auch Blödsinn schreiben könnte)
    Und ich dachte es wäre auch um "Divison by zero" gegangen, aber dass hast du in dem Ticket ja nicht behauptet.
    Das heißt, daß das hier im Thread ein anderer ebenfalls zu behebender Fehler ist.

    Gruß,
    noRiddle
    3 Antworten
    3054 Aufrufe
    25. Februar 2018, 23:32:56 von hpzeller
    11 Antworten
    8449 Aufrufe
    13. März 2013, 20:24:05 von ad0r
    1 Antworten
    2714 Aufrufe
    09. Februar 2013, 19:13:50 von WolfgangR
               
    anything