Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler in eustandardtransfer unter PHP 5.4

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Fehler in eustandardtransfer unter PHP 5.4

    Hallo zusammen,

    ich bekomme eine Fehlermeldung
    PHP Warning: Illegal string offset 'iso_code_2' in /.../../.../../../includes/modules/payment/eustandardtransfer.php on line 41:

    PHP-Code:
    // class methods
        
    function update_status() {
          global 
    $order$db;
          
          
    // check country
            
    $dest_country $order->billing['country']['iso_code_2'];
            
    $dest_zone 0;
            
    $error false;
            
    $countries_table MODULE_PAYMENT_EUTRANSFER_COUNTRIES
            
    $country_zones split("[,]"$countries_table);
            if (
    in_array($dest_country$country_zones)) {
                
    $dest_zone $i;
                
    $this->enabled true;
            } else {
                
    $this->enabled false;
            }

          if ( (
    $this->enabled == true) && ((int)MODULE_PAYMENT_EUTRANSFER_ZONE 0) ) {
            
    $check_flag false;
            
    $check $db->Execute("select zone_id from " TABLE_ZONES_TO_GEO_ZONES " where geo_zone_id = '" MODULE_PAYMENT_EUTRANSFER_ZONE "' and zone_country_id = '" $order->billing['country']['id'] . "' order by zone_id");
            while (!
    $check->EOF) {
              if (
    $check->fields['zone_id'] < 1) {
                
    $check_flag true;
                break;
              } elseif (
    $check->fields['zone_id'] == $order->billing['zone_id']) {
                
    $check_flag true;
                break;
              }
              
    $check->MoveNext();
            }

            if (
    $check_flag == false) {
              
    $this->enabled false;
            }
          }
        } 

    Die gleiche Warnung erhalte ich auch im Modul /../../../../../includes/modules/payment/germanbanktransfer.php on line 36

    Kann jemand helfen?

    Beste Grüße
    Meinhard

    #2
    Welche PHP Version wird genau verwendet? (Admin > Tools > Serverinfo)

    Kommentar


      #3
      PHP Version: 5.4.21 (Zend: 2.4.0) PHP Memory Limit: 90M

      Kommentar


        #4
        Für diese PHP Version wäre ein Update auf Zen Cart 1.5.1 ratsam.

        In der Zwischenzeit ändere in includes/modules/payment/eustandardtransfer.php auf:

        Code:
        // check country
                $dest_country = $order->billing['country']['iso_code_2'];
                $dest_zone = 0;
                $error = false;
                $countries_table = MODULE_PAYMENT_EUTRANSFER_COUNTRIES; 
                $country_zones = explode(",", $countries_table);
                if (in_array($dest_country, $country_zones)) {
                    $dest_zone = $i;
                    $this->enabled = true;
                } else {
                    $this->enabled = false;
                }
        Ist der Fehler dann behoben?

        Kommentar


          #5
          Vielen Dank für die schnelle Hilfe.

          Aktuell bleibt das Cache-Verzeichnis leer, also momentan keine Fehlermeldungen.
          Ich werde das beobachten.


          Den Rat, auf Zencart 1.5.1 zu wechseln, muss ich durchdenken (bin im Frühjahr
          erst auf 1.5.0 gewechselt und ist ja doch immer ein echter Akt).

          Kommentar


            #6
            Der Fehler ist leider noch nicht behoben. Zumindest weiß ich nun, wie ich ihn bekomme:

            Wenn ich im Admin-Bereich eine Bestellung mit Vorkasse-Zahlung anschaue, wird mir der Illegal string offset in eustandardtransfer.php on line 41 gemeldet und wenn ich eine Laststrift Bestellung anschaue, erhalte ich die PHP Warning
            aus germanbanktransfer.php heraus.

            Kommentar


              #7
              1.5.1 - selber Fehler

              Hallo,

              ich habe hier in der 1.5.1 den selben Fehler - allerdings denke ich ich bin dem ganzen ein wenig auf der Spur.

              Mein Modul eustandardbanktransfer ist wie folgt konfiguriert:

              Zahlungszone: keine
              Länder: BE,DE,EE,FI,FR,GR,IE,IT,LU,NL,AT,PT,SK,SI,ES

              Ich dachte mir es liegt an der Einstellung der Zahlungszone - ich hab es auf "ALL" geändert und siehe da: die Kunden können im Webshop nichts mehr bestellen - es erscheint die Meldung "Entschuldigung, aber wir können Zahlungen aus Ihrer Region nicht annehmen ."
              Ich muss eines vorweg schicken: Es sind nur die Länder und Bundesländer von Österreich und Deutschland im Shop enthalten. Mehr braucht es nicht.

              Sonst funktioniert der shop selbst wunderbar, aber die Fehlermeldung nervt nun doch ein wenig.

              Wäre nett wenn das nochmal jemand aufgreifen kann - die verwendete PHP Version ist derzeit 5.4.28, demnächst wird auf 5.4.30 hochgehoben.
              Greift das Modul "eustandardbanktransfer" eventuell auf die Umgebungsvariablen zu?

              Vielen Dank und liebe Grüße,

              Andreas

              Kommentar


                #8
                Zitat von hartundweich Beitrag anzeigen
                Ich dachte mir es liegt an der Einstellung der Zahlungszone - ich hab es auf "ALL" geändert und siehe da: die Kunden können im Webshop nichts mehr bestellen - es erscheint die Meldung "Entschuldigung, aber wir können Zahlungen aus Ihrer Region nicht annehmen
                Das Modul eustandardtransfer steuert rein über die hinterlegten Länder, für welche Länder Banküberweisung angeboten wird oder nicht. Die Einstellung für die Zone muss immer auf "kein" bleiben. Grund ist, dass man so viel flexibler Länder berechtigen kann, sonst müsste man immer irgendwelche Zusatzzonen einrichten, nur um sie dann ausschließen zu können.

                Der zweite Error unter PHP 5.4.x wird mit folgender Änderung beseitigt (wird auch so in 1.5.3 aufgenommen, alle bisherigen Zen Cart Versionen sind nun mal nicht mit PHP 5.4 oder 5.5 wirklich vollständig kompatibel):

                ca. Zeile 41:

                Ändern von:

                Code:
                $dest_country = $order->billing['country']['iso_code_2'];
                auf:

                Code:
                $dest_country = isset ($order->billing['country']['iso_code_2']) ? $order->billing['country']['iso_code_2'] : 0 ;

                Kommentar


                  #9
                  Hallo,

                  vielen Dank für die Info - sowas in der Art dachte ich mir, hatte das gleiche Problem mit einigen Webanwendungen die ich von PHP 5.3 nach PHP 5.4 portiert habe - das war erst letztes Jahr und PHP 5.5 wartet schon auf die Ausrollung, bin schon gespannt was da wieder alles auf uns zukommt...

                  lg
                  Andreas

                  Kommentar

                  Info zu diesem Forenarchiv:
                  Mit Release von 1.5.7 wurde die deutsche Zen Cart Version auf eine reine DIY-Lösung umgestellt.
                  Für einen Support via Forum stehen keine personellen und zeitlichen Ressourcen mehr zur Verfügung.
                  Dieses Supportforum bleibt im Nur-Lesen-Modus als Wissensarchiv noch online verfügbar.
                  PM Funktionalität, Registrierung und Posten neuer Beiträge sind deaktiviert.
                  Zugriff auf Anhänge in den Postings ist auch ohne Registrierung/Einloggen möglich.
                  FAQ und Downloadbereich des Forums wurden in die neue umfangreiche Knowledgebase auf der zen-cart-pro.at Website übernommen.

                  Das Development der deutschen Zen Cart Version geht wie bisher auf Github weiter.
                  Wir werden auch weiterhin neue Versionen bereitstellen und die Onlinedokumentation/Knowledgebase aktualisieren.
                  Fehler in der Software können auf Github als Issues gemeldet werden.
                  Follow us
                  aktuelle version
                  Zen Cart 1.5.7g deutsch
                  vom 12.12.2023
                  [Download]
                  Lädt...
                  X