Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler in query_factory nach php5.3 Umstellung

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

    Fehler in query_factory nach php5.3 Umstellung

    Mein Provider hat vor ein paar Tagen auf php 5.3 umgestellt. Ich habe das kleine Patch dafür schon vorsorglich installiert. Klappte alles wunderbar.
    Heute fällt mir auf, dass das Debug log den cache-Ordner voll schreibt mit 100erten von Fehlermeldungen. Die beziehen sich immer auf diese Datei:
    includes/classes/db/mysql/query_factory.php on line 149 und Zeilen 422, 46, 48, 187.
    Da das erst seit der Umstellung ist (kann man am Datum sehen), muss es damit zu tun haben.

    Was kann ich da machen? Wollte das Debug Tool eigentlich nicht deaktivieren.

    #2
    In all diesen Zeilen wird das hier verwendet:
    Code:
    if (!ereg('^[0-9]', $key)) {
    Die ereg Funktion gilt in in PHP 5.3. als veraltet (deprecated), daher die Warnmeldungen.
    Der Ersatz dafür ist die preg_match Funktion
    Ändere mal alle diese Zeilen auf:
    Code:
    if (!preg_match('/^[0-9]/', $key)) {
    Sind die Errors im Log danach weg?

    Kommentar


      #3
      Danke, bis jetzt hat's funktioniert. Zur Zeit keine Warnungen mehr.

      Kommentar


        #4
        Okay, Fehlermeldungen sind noch da, aber schon reduziert.
        Jetzt werden diese Zeilen noch angemeckert:

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /includes/functions/functions_email.php on line 161

        [20-Feb-2010 20:58:39] PHP Deprecated: Function ereg_replace() is deprecated in /includes/init_includes/init_sanitize.php on line 17

        [20-Feb-2010 20:58:39] PHP Deprecated: Function ereg_replace() is deprecated in /includes/init_includes/init_sanitize.php on line 19

        [20-Feb-2010 20:58:39] PHP Deprecated: Function ereg_replace() is deprecated in /includes/init_includes/init_sanitize.php on line 20

        [20-Feb-2010 20:58:39] PHP Deprecated: Function ereg_replace() is deprecated in /includes/init_includes/init_sanitize.php on line 42

        [20-Feb-2010 20:58:39] PHP Deprecated: Function ereg_replace() is deprecated in /includes/classes/template_func.php on line 46

        [20-Feb-2010 20:58:39] PHP Deprecated: Function ereg_replace() is deprecated in /includes/classes/template_func.php on line 48

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 10

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 68

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 95

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 101

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 124

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 162

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 237

        [20-Feb-2010 20:58:39] PHP Deprecated: Assigning the return value of new by reference is deprecated in /ajax/xajax5/xajax_core/xajaxAIO.inc.php on line 395

        [20-Feb-2010 20:58:40] PHP Deprecated: Function ereg_replace() is deprecated in /includes/templates/template_default/sideboxes/tpl_currencies.php on line 13

        Kommentar


          #5
          bin noch nicht weiter, scheinen ja bestimmte Funktionen zu sein, die auf php 5.3 umgeschrieben werden müssen.
          Hatte kein anderer diese Probleme?

          Kommentar


            #6
            Zitat von susannes Beitrag anzeigen
            scheinen ja bestimmte Funktionen zu sein, die auf php 5.3 umgeschrieben werden müssen.
            Es müssen etliche Dinge für PHP 5.3 umgeschrieben werden, das ist auch der Grund, warum sich die neu Zen-Cart Version so stark verzögert.
            Der PHP 5.3 Patch ermöglicht Dir aber Zen-Cart fehlerlos auch mit 5.3 zu betreiben, diese Errors im Log sind keine Fatal Errors, sondern nur Warnmeldungen aufgrund der mit PHP 5.3. als veraltet geltenden Funktionen.
            Ich würde das Error Logging abdrehen bzw. die Logs ignorieren, solange noch nicht alle betroffenen Dateien umgeschrieben sind.
            Auf die Funktionalität hat das ja gar keinen Einfluss. Es wird vor der kommenden Zen-Cart 2.0 noch eine Zwischenversion 1.3.9 geben, in der dann alles für PHP 5.3 angepasst ist.

            Alle guten Hoster, die ich kenne, stellen nicht komplett auf PHP 5.3 um, höchstens optional.

            Es sind immer dieselben Funktionen, hier ist die nötige Vorgangsweise gut beschrieben:


            Ich hab momentan nicht die Zeit, alle anzuschauen, aber hier mal die nötigen Dinge in der includes/init_includes/init_sanitize.php, nach diesem Muster kannst Du die übrigen Stellen auch ändern:

            Zeile 17

            alt

            Code:
            if (isset($_GET['products_id'])) $_GET['products_id'] = ereg_replace('[^0-9a-f:]', '', $_GET['products_id']);
            neu

            Code:
            if (isset($_GET['products_id'])) $_GET['products_id'] = preg_replace('/[^0-9a-f:]/', '', $_GET['products_id']);
            Zeile 19

            alt

            Code:
            if (isset($_GET['cPath'])) $_GET['cPath'] = ereg_replace('[^0-9_]', '', $_GET['cPath']);
            neu

            Code:
            if (isset($_GET['cPath'])) $_GET['cPath'] = preg_replace('/[^0-9_]/', '', $_GET['cPath']);
            Zeile 20

            alt

            Code:
            if (isset($_GET['main_page'])) $_GET['main_page'] = ereg_replace('[^0-9a-zA-Z_]', '', $_GET['main_page']);
            neu

            Code:
            if (isset($_GET['main_page'])) $_GET['main_page'] = preg_replace('/[^0-9a-zA-Z_]/', '', $_GET['main_page']);

            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.7h deutsch
            vom 15.04.2024
            [Download]
            Lädt...
            X