Jump to content

Recommended Posts

Änderungen für PrestaShop 1.5

Für diejenigen, die auf Ihren PrestaShop 1.5.6 nicht verzichten wollen und trotzdem auf PHP 7.2 umsteigen wollen oder müssen, hier die wesentlichen Anpassungen zum Download.

Manchmal waren es nur Kleinigkeiten. Größere Änderungen waren vor allem in den Tools erforderlich, außerdem beim Editor TinyMCE.

Die Klasse Rijndael (classes/Rijndael.php) muss unbedingt durch eine gepatchte ersetzt werden, die auf Open SSL umschaltet für den Fall, dass die Mcrypt-Erweiterung von PHP 7.2 nicht installiert ist. Das ist ab 7.2 nämlich standardmäßig nicht mehr der Fall. Ihr könnt die Rijndael.php verwenden, die seit PrestaShop 1.6.1.18 mit ausgeliefert wird. Trotzdem würde sich PrestaShop 1.5 standhaft weigern, Rijndael (ganz unten im Back Office Menu Erweiterte Einstellungen --> Leistung) aktiv zu halten und will immer auf Blowfish umschalten. Hier bedarf es sowohl bei PrestaShop 1.5 als auch 1.6 eines kleinen Tricks: Die Boolsche Variable PS_CIPHER_ALGORITHM in der Datenbanktabelle ps_configuration muss auf den Wert 1 gesetzt werden. Das geht mit PHPMyAdmin, entweder direkt durch eine Eingabe im entsprechenden Feld, oder im SQL-Fenster durch Eingabe des folgenden Befehls:

UPDATE `ps2_configuration` SET `value` = 1 WHERE `name` = 'PS_CIPHER_ALGORITHM'

Das ist aber auch schon der einzige Datenbank-Eingriff, der erforderlich ist. 

Smarty hat zwar ein Upgrade zur Verfügung gestellt für PHP 7.2, aber das ist nicht abwärtskompatibel. Daher solltet ihr wirklich nur die Änderungen, die ihr hier findet, einspielen. 

Sicherheitshalber solltet ihr auf jeden Fall vor dem Einspielen der Dateien folgendes erledigen:

  1. Shop auf Wartungsmodus umschalten. Hierbei nicht vergessen, die eigene IP zu hinterlegen, um den Shop weiterhin aufrufen zu können.
  2. In der config/settings.inc.php den Debug-Modus einschalten (von false --> true)
  3. Alle Originale der gepatchten Dateien aus eurem Shop vorher sichern.
  4. Prüfen, ob die eine oder andere Datei als Overrride vorliegt. Dann müsste der jeweils geänderte Code auf jeden Fall im Override geändert werden.
  5. Nach dem Einspielen der gepatchten Dateien auf jeden Fall den Shop testen und den Checkout für alle Zahlungsarten einmal durchführen.
  6. Unbedingt auch das Verhalten von Fremdmodulen oder auch Fremdtemplates testen (Transformer z.B. benötigt Anpassungen)!
  7. Für Tests des Frontend und Backend gilt: Meldungen wie "Notice" oder Warning" können i.d.R. ignoriert werden, Fehlermeldung ("Error") solltet ihr aber gewissenhaft mit Fundstelle und Änderungshinweis notieren. Falls ihr hier nicht weiter wisst, könnt ihr die Fehlermeldung - und bitte nur Fehler! -  in diesem Topic posten.

Der Download ist zur Sicherheit mit einer Prüfsumme versehen, deren Gültigkeit ihr durch Doppelklick auf die sha256-Datei in der Mantel-Zipdatei überprüfen könnt. (Natürlich auf dem heimischen PC vor dem Upload).

Alle Dateien hier zum Download: PS 1562 Umstellung auf PHP 7.2.zip

Getestet und im Live-Betrieb problemlos unter PrestaShop 1.5.6.1 und 1.5.6.2. Dennoch will ich gar nicht ausschließen, doch noch etwas vergessen zu haben - Kritische Testberichte sind also willkommen!

Bei Bedarf können auch Patches für das Transformer-Theme und GC German und GC Paypal nachgeliefert werden. Tests mit EU legal habe ich keine gemacht. Es würde mich aber wundern, wenn man hier und da in diesem Modul nicht auch an der Stellschraube drehen müsste, damit es hundertprozentig mit PHP 7.2 zusammenarbeitet.

Die erforderlichen Änderungen für PrestaShop 1.6.1.x findet ihr in diesem Thread: https://www.prestashop.com/forums/topic/900129-ps-16110-php-v5560-v72/

**************************************************************

Änderungen für PrestaShop 1.6

EDIT: In PrestaShop 1.6 sind es weniger Änderungen, aber auch die sollten besser eingepflegt werden, um unangenehme Überraschungen zu vermeiden. Hier noch mal zusammengefasst alle wesentlichen Core-Änderungen zum Download: PS 1.6.1x Umstellung auf PHP 7.2.zip

Bitte lest auf jeden Fall vorher die im Download enthaltene readme.txt, bevor ihr den Inhalt der Zip-Datei in euren PrestaShop 1.6 einspielt!

 

Share this post


Link to post
Share on other sites

Wer den Webservice von Prestashop nutzt, sollte für PHP 7.2 noch mindestens eine weitere Änderung in allen Prestashop-Versionen vornehmen, die ich im französischen Forum beschrieben habe: https://www.prestashop.com/forums/topic/954013-erreur-class-rijndael-not-found-et-passage-à-php72/?do=findComment&comment=3051696

In der Datei classes/webservice/WebserviceOutputBuilder.php müssen in Zeile 542 geschweifte Klammern eingefügt werden, sonst gibt es eine Fehlermeldung. Statt 
              field['value'] = $object->$field['getter']]() ;

muss es korrekt heißen:
             field['value'] = $object->{$field['getter']}() ;

Share this post


Link to post
Share on other sites

Ich wundere mich, dass es noch niemandem aufgefallen zu sein scheint, dass man unter PHP 7.1 und 7.2 weder neue SQL-Abfragen abspeichern noch alte ändern kann, ohne dass es Fehlermeldungen hagelt. D.h., reparieriert man an einer Stelle, wird einem der nächsten Bug präsentiert.

Das gilt für PrestaShop 1.5 und für alle 1.6-Versionen bis einschließlich 1.6.1.23.

Die Lösung ist recht einfach.

Prestashop 1.5

Im Verzeichnis /tools/parser_sql muss die Funktion process_expr_list in der Datei php-sql-parser.php ab Zeile 1234 leicht geändert werden:

                $sub_expr = "";
                $expr = array();

                $expr[] = array( 'expr_type' => $type, 'base_expr' => $token, 'sub_tree' => $processed);
                $expr = array( 'expr_type' => $type, 'base_expr' => $token, 'sub_tree' => $processed);
                $prev_token = $upper;
                $expr_type = "";
                $type = "";
            }
            if($sub_expr) {
                $processed['sub_tree'] = $this->process_expr_list($this->split_sql(substr($sub_expr,1,-1)));
            }
            
            if(!is_array($processed)) {
    
                print_r($processed);
                $processed = false;
            }
    
            if($expr_type) {
                $expr[] = array( 'expr_type' => $type, 'base_expr' => $token, 'sub_tree' => $processed);
                $expr = array( 'expr_type' => $type, 'base_expr' => $token, 'sub_tree' => $processed);

Wer alle übrigen von mir vorgeschlagenene Änderungen eingespielt hat, hat nun wieder eine voll funktionsfähige SQL-Abfrage.

 

Prestashop 1.6

Im Verzeichnis /tools/parser_sql/processors müssen zwei (kleine) Dateien (jeweils ab Zeile 44) erweitert werden:

  1. ReplaceProcessor.php
        public function process($tokenList) {
            return parent::process($tokenList);

        public function process($tokenList, $token_category = 'INSERT') {
             return parent::process($tokenList, 'REPLACE');

  2. DuplicateProcessor.php
        public function process($tokens) {
            return parent::process($tokens, false);

        public function process($tokens, $isUpdate = false) {
            return parent::process($tokens, $isUpdate);

Ich habe das mal in Whileys Demo-Shop geändert. Ihr könnt es gern ausprobieren. Jetzt gibt es beim beim Speichern von Änderungen oder neuer Abfragen keine Fehler 500 mehr (weiße Seite).

Die Änderungen am Core habe ich auf Github veröffentlicht:

https://github.com/PrestaShop/PrestaShop/pull/12642
https://github.com/PrestaShop/PrestaShop/pull/12643

Alles weitere liegt dann an PrestaShop ....

EDIT: Wie man auf Github mittlerweile  nachlesen kann, lehnt PrestaShop solche Bugfixes für 1.6 zur Anpassung an PHP 7.2 ab, weil die User auf 1.7 umsteigen sollen. Ihr müsst sie also selbst einpflegen.

Share this post


Link to post
Share on other sites

nicht dass ich es jetzt gerade im Moment brauchen würde, aber tausend Dank für deine Arbeit. Sobald mein Anbieter php 5.6 abschaltet, werde ich dir zu Füßen liegen ;) ... und einer meiner wunderschönen Shops in noch 1.5.6 wird dann auch dank dir trotzdem weiterleben dürfen.

gepinnt lassen! Es werden sicherlich viele brauchen ...

und trotzdem die Frage: welche letzte php Version wäre für einen Presta 1.5.6 ohne Modifikationen tauglich?

 

Danke!

H.

Share this post


Link to post
Share on other sites
vor 3 Stunden schrieb holle75:

trotzdem die Frage: welche letzte php Version wäre für einen Presta 1.5.6 ohne Modifikationen tauglich?

Mit 2,3 kleineren weiteren Core-Änderungen PHP 7.3. 😊

Einen 1.5.6..2-Testshop mit Transformer Theme von Sunnytoo habe ich problemlos umgestellt.

 

Share this post


Link to post
Share on other sites

... ich meinte es eher umgekehrt. Mit welcher letzten php version läuft ein 1.5.6 OHNE Modifikationen. :D

Share this post


Link to post
Share on other sites

Das ist doch hinlänglich bekannt: standardmäßig mit der letzten vor PHP 7.0, also PHP 5.6.40.

Share this post


Link to post
Share on other sites

sind in den Download Dateien alle Änderungen mit einem Kommentar versehen?

Gleich die Files mit der Version 1.6.1.15 ab und habe einige Abweichungen. 

Wird wohl nicht ausreichen nur Deine Anpassungen zu übernehmen  

Share this post


Link to post
Share on other sites

Hast Du die beigefügte Readme.txt nicht gelesen? Bis auf drei, die die einzigen Abweichungen in der jeweilige Datei sind, habe ich .W. alles kommentiert. Abweichungen, die ich nicht kommentiert habe, gehen daher in der Regel auf das Konto von PrestaShop. Das Einfachste wäre, du würdest die Originaldateien Deiner Version zuvor sichern, bevor u meine einspielst. Dann wird sich ja zeigen, ob es funktioniert.

 

Share this post


Link to post
Share on other sites

doch, habe ich gelesen. Darum die Dateien compared und angefangen Deine Änderungen zu übertragen. Irgendwann waren es doch viele, deswegen die Frage ob ich nur die mit Kommentaren mitnehmen soll. 

Könnte dann natürlich auch passieren, dass die neueren Funktionen nicht php kompatibel sind 

Share this post


Link to post
Share on other sites
vor 14 Stunden schrieb Viitali:

Könnte dann natürlich auch passieren, dass die neueren Funktionen nicht php kompatibel sind 

Äh...? Nö! Oder anders gesagt: Welche genau meinst du denn?

Share this post


Link to post
Share on other sites

ich meine den code der in 1.15 vorhanden ist und in 1.10 noch nicht da war.

Aber ich teste mal und werde berichten

Share this post


Link to post
Share on other sites
vor 55 Minuten schrieb Viitali:

ich meine den code der in 1.15 vorhanden ist und in 1.10 noch nicht da war.

Ist mir schon klar, doch das muss nicht unbedingt ein Nachteil sein. Aber testen ist in jedem Fall die vernünftige Lösung.

Share this post


Link to post
Share on other sites

Und nicht nur PHP 7.2 ist möglich für einen PrestaShop 1.5!

image.png.bbb9fdf4c4ff6e8da199923f6b8ffb9e.png

läuft ohne Probleme! Allerdings musste schon für PHP 7.1 das Template leicht angepasst werden.

  • Thanks 1

Share this post


Link to post
Share on other sites

Danke für die Hilfe. Habe die Anpassungen bei mir mittlerweile durchgeführt. Scheint alles soweit zu funktionieren.

Da jetzt das alte Template mit neuem PHP nicht klar kommt, wollte ich ein neues holen. Ist jetzt aber nicht so einfach.
Da PS PHP 7.2 nur ab 1.7 offiziell unterstützt, hat auch kein Template Entwickler die 1.6 Version geupdatet.  

 

Share this post


Link to post
Share on other sites

Welches Template hast du denn? Normalerweise sind da nur wenige Änderungen erforderlich. Du kannst das herausfinden, wenn du den Debugmodu aktiviert. Oder du steigst auf Transformer von Sunnytoo um. Damit sollte es eigentlich gehen.

Share this post


Link to post
Share on other sites

"Vela" hieß das Theme. Mittlerweile aber auch schon vom Autor nicht unterstützt. 

Debugmodi ist an, daher die Befürchtung, dass ohne PHP Kentnisse mir der Rattenschwanz doch zu groß ist. Da komme ich mit dem Neukauf denke ich günstiger weg.

Danke für den Tipp, schaue mir den Transformer an

Share this post


Link to post
Share on other sites

Mach das! Der Vorteil  bei den Templates von Sunnytoo ist nämlich nicht nur, dass sie sich super konfigurieren lassen. Der Entwickler Johnny Lee ist außerdem ein genialer Programmierer und auch sehr hilfsbereit, wenn irgendetwas nicht läuft.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More