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: Deprecated: in Metatags.php

    Tuntrarider

    • Neu im Forum
    • Beiträge: 23
    • Geschlecht:
    Deprecated: in Metatags.php
    am: 20. November 2013, 11:30:05
    Hallo Zusammen,

    ich habe heute meine PHP-Version von. 5.3 auf 5.5 umgestellt (Strato, bitte nicht schmipfen!)  jetzt bekomme ich auf der Startseite meines Shops diese Meldung.

    Code: PHP  [Auswählen]
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /mnt/webc/c0/17/53866317/htdocs/mshop/includes/modules/metatags.php on line 182

    Wie muss denn die neue Funktion aussehen damit diese Meldung verschwindet.

    Vielen Dank für eure Hilfe.

    EDIT: in der application_top habe ich es einstweilen unterdrückt.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=28402.0

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Deprecated: in Metatags.php
    Antwort #1 am: 20. November 2013, 13:11:59
    Akutelle Version:

    Mindestvoraussetzungen
    PHP ab 5.x bis PHP 5.4.x
    cURL library
    MySQL ab 5.0.0 oder höher
    GDlib mit gif Support
    Funktion fsockopen()


    Gibt es einen Grund warum man sich daran nicht hält? :-?

    Tuntrarider

    • Neu im Forum
    • Beiträge: 23
    • Geschlecht:
    Re: Deprecated: in Metatags.php
    Antwort #2 am: 20. November 2013, 13:32:00
    Das ist ein Argument  :datz:

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Deprecated: in Metatags.php
    Antwort #3 am: 20. November 2013, 13:35:07
    Sehe ich auch so.

    Versuch doch mal das preg_replace() mit preg_replace_callback() zu ersetzen.

    Gruß
    Ronny

    Tuntrarider

    • Neu im Forum
    • Beiträge: 23
    • Geschlecht:
    Re: Deprecated: in Metatags.php
    Antwort #4 am: 20. November 2013, 14:09:07
    Hallo,

    Zitat
    Versuch doch mal das preg_replace() mit preg_replace_callback() zu ersetzen.

    hatte ich bereits versucht, aber leider kein Erfolg.

    mr.mc.mauser

    • Fördermitglied
    • Beiträge: 343
    • Geschlecht:
    Re: Deprecated: in Metatags.php
    Antwort #5 am: 22. Juli 2014, 10:25:02
    Auch wenn der Thread schon älter ist.

    Mich hat das auch geärgert, ein einfaches ersetzen durch preg_replace_callback führt zu einem weiteren Fehler:

    Code: PHP  [Auswählen]
    preg_replace_callback(): Requires argument 2, 'chr('\1')', to be a valid callback

    Versucht mal folgendes ab Zeile 182

    Code: PHP  [Auswählen]
    //return preg_replace ( '/&#(\d+);/me',"chr('\\1')",$Return);
    return preg_replace_callback('/&#(\d+);/m', function($m){
            return chr($m[1]);
    }, $Return);

    weiss jetzt nicht ob es 100% klappt aber die Fehlermeldung ist weg.

    ganz wichtig... Nur machen wenn PHP >= 5.5 bzw. genau dieser Fehler kommt.

    wer Lokal eine Version ab 5.5 benutzt und Online eine Kleinere kann auch folgendes machen:

    Code: PHP  [Auswählen]
    //return preg_replace ( '/&#(\d+);/me',"chr('\\1')",$Return);
    if (strnatcmp(phpversion(),'5.5') >= 0)  {
            return preg_replace_callback('/&#(\d+);/m', function($m){
                    return chr($m[1]);
            }, $Return);
    } else {
            return preg_replace_callback( '/&#(\d+);/me',"chr('\\1')",$Return);
    }

    Theoretiker

    • Frisch an Board
    • Beiträge: 55
    Re: Deprecated: in Metatags.php
    Antwort #6 am: 28. November 2014, 18:42:14
    Ich glaube inzwischen ist 5.6.3 offiziell stable-release. ;) ;) ;)

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: Deprecated: in Metatags.php
    Antwort #7 am: 15. Dezember 2014, 16:47:26
    Hi, da wir gerade kurz vor der Umstellung auf php 5.4 stehen wollte ich mich bereits für php 5.5 rüsten und so habe ich im Testshop kurzerhand einen Test mit php 5.5 gemacht. Wie erwartet erhielt ich auch die Fehlermeldung:

    Code: PHP  [Auswählen]
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in

    in der hier genannten /includes/modules/metatags.php on line 183 erhalten.

    Durch die Anpassung von mr.mc.mauser sowie der unten geänderten Zeilen sind die Fehlermeldungen verschwunden und der Test-Shop scheint auch unter php 5.5 (im FastCGI Modus) zu funktionieren.

    Für mich jedenfalls schonmal beruhigend auch wenn da noch mehr Anpassungen kommen sollten.

    Weiter angepasst wurde:
    Datei: includes\classes\Smarty_2.6.27\Smarty_Compiler.class.php

    Code: PHP  [Auswählen]
    $source_content = preg_replace($search.'e', "'"
     . $this->_quote_replace($this->left_delimiter) . 'php'
     . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
     . $this->_quote_replace($this->right_delimiter)
     . "'"
     , $source_content);

    ersetzt mit:

    Code: PHP  [Auswählen]
    if (version_compare(PHP_VERSION, 5.5, '<')){
        $source_content = preg_replace($search.'e', "'"
        . $this->_quote_replace($this->left_delimiter) . 'php'
        . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
        . $this->_quote_replace($this->right_delimiter)
        . "'"
        , $source_content);
     }else{
        $source_content = preg_replace_callback($search, create_function ('$matches', "return '"
        . $this->_quote_replace($this->left_delimiter) . 'php'
        . "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"
        . $this->_quote_replace($this->right_delimiter)
        . "';")
        , $source_content);
     }

    Datei: includes\application_top.php

    Code: PHP  [Auswählen]
    error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);

    ersetzt mit:

    Code: PHP  [Auswählen]
    error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
    13 Antworten
    21988 Aufrufe
    31. Mai 2015, 13:28:47 von Sascham2001
    1 Antworten
    2978 Aufrufe
    26. November 2014, 15:31:07 von Bonsai
    2 Antworten
    211 Aufrufe
    03. Juni 2024, 12:29:16 von phpcraft
               
    anything