Seite 1 von 1

create_function() is deprecated in class.rex_article_base.inc.php unter PHP 7.2

Verfasst: 23. Sep 2018, 14:12
von joachim123
hi all,

wegen Umstellung auf PHP 7.2 habe ich mehrere, ältere Webseiten mit Redaxo 4.x auf Redaxo 4.7.2 umgestellt. Bei diesen älteren Seiten machte Redaxo 5.x keinen Sinn, da ich alle Module hätte neu schreiben müssen. Bei einer Seite hatte ich plötzlich ein Problem, ich bekam einen Deprecated-Fehler bezüglich create_function() in der Datei class.rex_article_base.inc.php

Normalerweise macht ja ein Fix im Core nicht viel Sinn, aber die 4er Generation ist ja nun eine Sackgasse. Ich habe also (erfolgreich) wie folgt gefixt:

Code: Alles auswählen


    /*protected*/ function replaceLinks($content)
    {
        return preg_replace_callback(
            '@redaxo://(\d+)(?:-(\d+))?/?@i',
            function ($matches) {
                $secondParam = isset($matches[2])
                    ? $matches[2]
                    : (integer) $this->clang;
                return rex_getUrl($matches[1], $secondParam );
            },
            /*
            create_function(
                '$matches',
                'return rex_getUrl($matches[1], isset($matches[2]) ? $matches[2] : ' . (integer) $this->clang . ');'
            ),
            */
            $content
        );
    }

Hab den alten Code dokumentationshalber auskommentiert mal drinne gelassen. Haltet Ihr das für sinnvoll, oder gibt es bessere Lösung?
Immer dankbar für Tipps ;)

Grüsse, Joachim

Re: create_function() is deprecated in class.rex_article_base.inc.php unter PHP 7.2

Verfasst: 13. Okt 2018, 21:59
von Thomas.Skerbis
Hallo Joachim,
du kannst es gerne als PR hier https://github.com/redaxo/redaxo4 einreichen, dann wird es evtl. in einem Update mitgeliefert.

Re: create_function() is deprecated in class.rex_article_base.inc.php unter PHP 7.2

Verfasst: 14. Okt 2018, 22:35
von joachim123
hi Thomas,

ah, wenn noch 4er Updates kommen mache ich im Laufe der Woche gerne mal einen PR...

Merci & Grüsse, Jo

Re: create_function() is deprecated in class.rex_article_base.inc.php unter PHP 7.2

Verfasst: 15. Okt 2018, 17:50
von teletubbie
Ein vergleichbares Problem taucht bei mir ab der Version 7.2 auf. Allerdings in Verbindung mit TvsBlog 1.4.2. Mit der Version 7.1 scheint es noch zu laufen. Zumindest habe ich keine entsprechenden Fehlermeldungen entdecken können. :? Die Änderungen innerhalb der Hauptversionen scheinen doch etwas größer zu sein.
Warning: Use of undefined constant rdx4908_encrypt_callback - assumed 'rdx4908_encrypt_callback' (this will throw an Error in a future version of PHP) in /www/htdocs/123123/domain.de/redaxo/include/generated/templates/17.template on line 14

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/123123/domain.de/redaxo/include/generated/templates/17.template:14) in /www/htdocs/123123/domain.de/redaxo/include/addons/seo42/classes/class.seo42_utils.inc.php on line 855

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/123123/domain.de/redaxo/include/generated/templates/17.template:14) in /www/htdocs/123123/domain.de/redaxo/include/functions/function_rex_client_cache.inc.php on line 166

Re: create_function() is deprecated in class.rex_article_base.inc.php unter PHP 7.2

Verfasst: 16. Okt 2018, 22:39
von joachim123
hm, sehe nicht wirklich den Zusammenhang zwischen "undefined constant" und deprecated. Und "Cannot modify header information" ist ja nur eine Folge der Warnung. Denke, Du solltest hierzu einen eigenen Thread aufmachen, vor allem, weil es ja wohl ein AddOn betrifft und nicht den Core.