comment passer une version 2.2MS2 PHP4 en PHP5.4, concretement que faut il faire ???? |
Bienvenue invité ( Connexion | Inscription )
comment passer une version 2.2MS2 PHP4 en PHP5.4, concretement que faut il faire ???? |
1 Apr 2015, 09:51
Message
#1
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 142 Inscrit : 20-September 08 Lieu : vaucluse Membre no 23023 |
Bonjour à tous !!!
OVH me signal qu'à ce jour les sites en PHP4 doivent migrer en PHP5.4 Mon site étant une version 2.2MS2 en PHP4, il faut que j'y passe. Mais concrètement que dois je faire ???? Merci d'avance je pense que cela va servir à beaucoup..... -------------------- os commerce 2.2ms2
|
|
1 Apr 2015, 20:12
Message
#2
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Bonjour,
Il y a déjà plusieurs fils sur le sujet : http://www.oscommerce-fr.info/forum/index....showtopic=68265 http://www.oscommerce-fr.info/forum/index....showtopic=71065 http://www.oscommerce-fr.info/forum/index....showtopic=70597 et sûrement d'autres ... Voilà aussi un lien pour les fichiers et modifs à faire pour les ereg eregi. Fais les modifs en local d'abord pour tester. Si tu coinces quelque part, n'hésite pas à expliquer ce que tu as fait et ce qui te coince -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
2 Apr 2015, 08:46
Message
#3
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 142 Inscrit : 20-September 08 Lieu : vaucluse Membre no 23023 |
Merci Bonbec
je vais m'y atteler.... -------------------- os commerce 2.2ms2
|
|
2 Apr 2015, 09:11
Message
#4
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 142 Inscrit : 20-September 08 Lieu : vaucluse Membre no 23023 |
je ne me rappelle plus ou je dois chercher pour savoir si je suis en UTF8.....
-------------------- os commerce 2.2ms2
|
|
2 Apr 2015, 09:22
Message
#5
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Re,
Est-ce que tu as Notepad++ ? C'est un freeware très pratique. Si oui, tu regardes un de tes fichiers. Dans le menu horizontal de Notepad++ tu as "encodage", tu cliques dessus et si tu as "Enoder en UTF-8 (sans BOM)" c'est que tu es en UTF-8 pour tes fichiers. -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
15 Apr 2015, 17:08
Message
#6
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-November 07 Membre no 19732 |
|
|
16 Apr 2015, 08:33
Message
#7
|
|
Ceinture bleue OSC Groupe : Membres Messages : 912 Inscrit : 4-February 04 Membre no 1926 |
OVH doit aussi faire des maj de MYSQL.
Quelqu'un sait si passer de mysql 5.0 a 5.5 implique de modifier du code ? -------------------- L'indispensable est en cours de traitement,
L'urgent sera traité demain, Le normal sera traité plus tard, Le reste on vera ... En conclusion : les journées sont trop courtes. Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-) |
|
29 Apr 2015, 18:19
Message
#8
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 100 Inscrit : 6-November 12 Membre no 31715 |
Hello, étant donné que je suis aussi concerné par la décision de migration de OVH vers PHP 5.4, le sujet que je vais énoncer est intrinsèquement lié avec la question du topic, et pourrait aussi apporter des éléments de réponses à laurentgo, créér un autre sujet serait je pense superflu.
(si jamais je dois quand même créer un autre sujet, n'hésitez pas à me le signaler). Donc, voilà. J'ai remarqué que les sessions étaient complètement bousillées par PHP 5.4 (si l'on utilise le code base du fichier /includes/functions/sessions.php) Ainsi, j'ai fais un mix du fichier de la MS2.3.4 (master version en fait) avec la MS2.2 (sur laquelle je dois travailler pour la rendre compatible avec PHP 5.4), et pas mal de tests poussés. Et ça fonctionne. Seulement, voilà, il y a un truc que je n'explique pas vraiment... Dans le code de tep_get_tax_rates() ** fichier: /includes/functions/general.php J'ai ça à un endroit: Code $country_id = $customer_country_id; $zone_id = $customer_zone_id; Et si je laisse ça tel quel (c'est le code par défaut), en faisant un echo de $country_id ou de $zone_id, je m'aperçois que cela retourne: 0.. Citation Je précises quand même que dans la page: login.php Si je fais un echo de $customer_country_id ou de $customer_zone_id, cela me retourne bien la valeur attendue.. Ce n'est QUE dans la fonction où l'on s'en sert comme "global" que ça semble être vide (car sûrement introuvable, mais pourquoi?) TOUTEFOIS.. Si.. je modifies comme suit: Code $country_id = $_SESSION['customer_country_id']; $zone_id = $_SESSION['customer_zone_id']; Et bien les taxes sont bien ajoutées car $country_id et $zone_id récupères bien les données censées êtres dans la session PHP actuellement créée et lue.. Des idées pourquoi moi je suis obligé de procéder comme cela (il me semble être le seul à procéder comme cela..) Autrement... Vous procédez comment vous ? Merci de vos retours. @Havock Où avez-vous vu que OVH met aussi à jour MySQL (je ne dis pas que vous avez tort hein, je veux juste en savoir plus!!). Merci. @laurentgo ET pour vous, Voici le lien vers la version 2.3.4 (master version) de sessions.php: https://github.com/osCommerce/oscommerce2/b...ns/sessions.php Les sessions ne fonctionneront pas si vous ne faites pas les mises à jours nécessaires du fichier sessions.php.. Un conseil, faites les. (et installez vous un serveur de test avec le mode display_errors = true, et aussi le error_reporting complet ! Voilà.. lastEdited(29/04/2015) Ce message a été modifié par SaphyraK - 29 Apr 2015, 18:55. -------------------- We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...) |
|
29 Apr 2015, 19:50
Message
#9
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
-------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
30 Apr 2015, 14:17
Message
#10
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 100 Inscrit : 6-November 12 Membre no 31715 |
Bonjour Bonbec,
Merci du remerciement, mais ça ne réponds pas spécialement à ma question.. :/ -------------------- We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...) |
|
30 Apr 2015, 14:44
Message
#11
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Re,
Comme je n'ai pas ce problème, je ne m'étais pas penché dessus vu que je suis occupé à passer ma MS2.2 en responsive design. Je viens de relire plus en détail ton post et ceci me fait tiquer : Citation J'ai remarqué que les sessions étaient complètement bousillées par PHP 5.4 (si l'on utilise le code base du fichier /includes/functions/sessions.php) Ainsi, j'ai fais un mix du fichier de la MS2.3.4 (master version en fait) avec la MS2.2 Je n'ai pas fait de mix, j'ai carrément remplacé les fichiers sessions.php, je n'ai pas fait de "mix". -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
4 May 2015, 14:16
Message
#12
|
|
Ceinture bleue OSC Groupe : Membres Messages : 912 Inscrit : 4-February 04 Membre no 1926 |
Bonjour SaphyraK,
Je pense qu'il est utile de garder tout ce qui concerne la migration en PHP 5.4 sur ce même sujet (ça évitera de chercher). Pour mysql 5.5 c'est OVH qui me l'a dit. En fait j'ai un serveur chez eux mais infogéré par eux. Il tourne avec mysql 5.0 qui ne sera bientôt plus supportée. Ils m'ont donc contacté pour passer sur une version plus récente comme la 5.5 Je vais donc faire à la fois PHP 5.4 et mysql 5.5. Comme Bonbec j'ai récupéré le fichier des sessions de la 2.3.4 et cela semble marcher. J'ai juste modifié la fonction _sess_write pour gérer le temps maximum de session visiteur. Code function _sess_write($key, $value) { $v_expiry = time() + 3600; // On fixe une durée d'une heure pour la session $check_query = tep_db_query("select 1 from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'"); if ( tep_db_num_rows($check_query) > 0 ) { return tep_db_query("update " . TABLE_SESSIONS . " set expiry = '" . tep_db_input($v_expiry) . "', value = '" . tep_db_input($value) . "' where sesskey = '" . tep_db_input($key) . "'"); } else { return tep_db_query("insert into " . TABLE_SESSIONS . " values ('" . tep_db_input($key) . "', '" . tep_db_input($v_expiry) . "', '" . tep_db_input($value) . "')"); } } Pour ta question liée à tep_get_tax_rates : le $customer_zone_id égal a zéro est normal si tu ne définis pas de région mais uniquement le pays de ton client. $customer_country_id est récupérée directement à partir de la variable de session $_SESSION['customer_country_id'] donc normalement tu ne devrais pas avoir de différence entre : Code $country_id = $customer_country_id; et Code $country_id = $_SESSION['customer_country_id']; Par contre le code que tu cites est : Code if (!tep_session_is_registered('customer_id')) { $country_id = STORE_COUNTRY; $zone_id = STORE_ZONE; } else { $country_id = $customer_country_id; $zone_id = $customer_zone_id; } Tu as vérifié la valeur de $_SESSION['customer_id'] ? Sinon as tu fait un echo de $country_id et à coté un echo de $customer_country_id ? Ce message a été modifié par Havock - 4 May 2015, 14:17. -------------------- L'indispensable est en cours de traitement,
L'urgent sera traité demain, Le normal sera traité plus tard, Le reste on vera ... En conclusion : les journées sont trop courtes. Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-) |
|
5 May 2015, 22:07
Message
#13
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 100 Inscrit : 6-November 12 Membre no 31715 |
Merci Havock, bon, je vais regarder tout ça plus en détail demain et t'en reparler.
Vous avez donc remplacé complètement le fichier pas fait de mix.. hum.. Intéressant.. Merci, je tenterai ça alors. -------------------- We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...) |
|
8 May 2015, 00:28
Message
#14
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 100 Inscrit : 6-November 12 Membre no 31715 |
Bon, alors, même en utilisant directement le même fichier de:
includes/functions/sessions.php de OSCOMMERCE 2.3.4, j'ai le même souci avec $customer_* Je ne sais pas ce qu'il se passe, aucuns messages d'erreurs, même dans le log Apache, comment je suis supposé comprendre le problème sans erreurs ? C'est frustrant. Avez vous aussi utilisé directement le fichier : includes/classes/sessions.php de OSCOMMERCE 2.3.4 ou pas ? @Havock: Concernant tes questions >>> Tu as vérifié la valeur de $_SESSION['customer_id'] ? <<< Oui: un echo de $_SESSION['customer_id'] dans tep_get_tax_rates() donne bien mon bon ID de client. >>> Sinon as tu fait un echo de $country_id et à coté un echo de $customer_country_id ? <<< Oui: echo $country_id; ==> Renvoie -1 (même identifié.., ce qui en soit est logique, vu que $country_id est forcé à -1 si l'on ne précise rien à l'appel) echo $customer_country_id; ==> Renvoie rien du tout echo $_SESSION['customer_country_id']; ==> Fonctionne, renvoie un chiffre qui est correct Bref, comme je le dis, c'est frustrant, et sans erreurs, vas-t-en trouver la cause... Et sinon, j'ai une question pour toi Havock, pourrais-tu me donner ton fichier de session OU me diriger vers le lien y menant ? Peut-être utiliserais-je en un incompatible avec OSCOMMERCE 2.2 (et même en mixant (ou pas) du coup, ça fonctionnera pas) Il y a aussi la piste du session bug 42 de compatibilité que j'exploite, mais, pourtant mon serveur a cette directive sur 'Off' et que je l'active (ou non) ça semble pas changer des masses.. rhâ.. Ce message a été modifié par SaphyraK - 8 May 2015, 00:55. -------------------- We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...) |
|
11 May 2015, 10:11
Message
#15
|
|
Ceinture bleue OSC Groupe : Membres Messages : 912 Inscrit : 4-February 04 Membre no 1926 |
Avez vous aussi utilisé directement le fichier : includes/classes/sessions.php de OSCOMMERCE 2.3.4 ou pas ? Ce fichier n'existe plus dans la version 2.3.4. Si tu appelle ce fichier dans ton application-top c'est peut-être ce qui cause ce problème. echo $country_id; ==> Renvoie -1 (même identifié.., ce qui en soit est logique, vu que $country_id est forcé à -1 si l'on ne précise rien à l'appel) echo $customer_country_id; ==> Renvoie rien du tout echo $_SESSION['customer_country_id']; ==> Fonctionne, renvoie un chiffre qui est correct Pas tout à fait ! Si on n'indique pas de valeurs pour les paramètres $country_id et $zone_id dans un appel de tep_get_tax_rate, leur valeur locale (à l'intérieur de la fonction) est de -1, mais uniquement le temps du test Code if ( ($country_id == -1) && ($zone_id == -1) ) { et ils se voient affecter d'autres valeurs tout de suite.Si on reprend le début de la fonction : Code function tep_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) { global $customer_zone_id, $customer_country_id; if ( ($country_id == -1) && ($zone_id == -1) ) { if (!tep_session_is_registered('customer_id')) { $country_id = STORE_COUNTRY; $zone_id = STORE_ZONE; } else { $country_id = $customer_country_id; $zone_id = $customer_zone_id; } } Le client arrive sur le site et n'est pas identifié. Quand on appelle tep_get_tax_rate (en supposant que l'on n'indique pas les paramètres $country_id et $zone_id dans l'appel de la fonction), $country_id et $zone_id sont à -1 (en local). On fait le test et dans la foulée $country_id prend la valeur de STORE_COUNTRY et $zone_id celle de STORE_ZONE (donc des valeurs diffèrentes de -1). Le client s'identifie. On renseigne donc les variables de session $_SESSION['customer_country_id'] et $_SESSION['customer_zone_id'] et $_SESSION['customer_id']. Ces valeurs sont automatiquement affectées aux variables $customer_country_id et $customer_zone_id et $customer_id via la commande dans application_top : Code extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS); Quand on appelle tep_get_tax_rate après que le client se soit identifié (en supposant que l'on n'indique pas les paramètres $country_id et $zone_id dans l'appel de la fonction), $country_id et $zone_id sont à -1 (en local). On fait le test et dans la foulée $country_id prend la valeur de $customer_country_id et $zone_id prend la valeur de $customer_zone_id Si tu fais un echo $country_id après le test if ( ($country_id == -1) && ($zone_id == -1) ) { ; tu ne dois pas avoir de valeur -1 (je pense que tu as dû faire ton echo $country avant le test). Que ton echo $customer_country_id; ne renvoi rien est étrange. Dans application-top as-tu Code extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS); . Si oui, poste le code des lignes entourant celle-ci. c'est peut-être un problème de register_globals.Envoi-moi ton email par mp pour le fichier de session. -------------------- L'indispensable est en cours de traitement,
L'urgent sera traité demain, Le normal sera traité plus tard, Le reste on vera ... En conclusion : les journées sont trop courtes. Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-) |
|
13 May 2015, 06:49
Message
#16
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 100 Inscrit : 6-November 12 Membre no 31715 |
@Havock:
Par rapport à: includes/classes/sessions.php de OSCOMMERCE 2.3.4: >>> Je ne travaille pas sur cette version, et je n'utilise même pas ce fichier en fait, c'était juste une question (au cas où) . Par rapport à ton explication sur $country_id et $zone_id: >>> Je le sais bien, mais comme je l'ai dis, j'ai dis à l'appel, et comme de mon côté, >>>> le système de renseignement futur de $country_id et $zone_id ne fonctionnait pas.. >>>>> (oui oui, ne fonctionnait, il fonctionne maintenant, et je vais dire pourquoi..) Par rapport à ta demande de donner mon email par messagerie privée pour que que tu puisses m'envoyer ton fichier de session: >>> Ce n'est désormais plus nécéssaire (et j'ai gardé mon mix du fichier sessions.php (functions). Et enfin, par rapport à extract(): >>> En fait.. C'était bien un problème de application_top.php (ainsi je supposes que celui de la zone administrative est aussi en problème..) Pour la grosse explication: Il ne contenait pas extract().. Mais, comme je n'ai jamais utilisé extract(), ... j'ai été perturbé par son utilisation, mais en fait, si j'ai bien compris, je vais tenter de dire pourquoi et en quoi c'est utile ici.. Ainsi, dans la balise de code, ... ce qui suit est tiré de mes notes personnelles, si je me plantes, merci de me dire en quoi, mais je penses avoir juste): Code Le code d'origine de OSCOMMERCE MS2.2 prévu pour PHP 5.3- fonctionnait très bien sans aucuns problèmes.. Toutefois, sous PHP 5.4+ il n'est pas capable de transférer aux variables $customer_* (même globalisées), les valeurs du tableau SUPERGLOBAL de sessions. Tableau qui est accessible via: $_SESSION Ainsi, pour "transférer", on doit extraire (via la fonction PHP extract()) les données de sessions ! Cette fonction ne fonctionne qu'avec un tableau associatif. Un tableau indexé numériquement ne produira aucun résultat, à moins que l'on n'utilise l'option EXTR_PREFIX_ALL ou EXTR_PREFIX_INVALID. Bref, on l'utilise pour créér des références des index nommés du tableau associatif $_SESSION (qui je rappèle est un tableau de type SUPERGLOBAL) afin de les utiliser depuis de simples variables du même nom. Pour mieux comprendre à quoi correspond les deux options (flags): EXTR_OVERWRITE+EXTR_REFS C'est très simple, http://php.net/manual/fr/function.extract.php EXTR_OVERWRITE : Lors d'une collision avec une variable de "référence à", réécrire la variable existante qui sera désormais vraiment une "référence à". EXTR_REFS : Extrait les variables sous forme de références. Cela signifie que les valeurs des variables importées font toujours référence aux valeurs des variables d'origine dans le paramètre array. Vous pouvez utiliser cette option seule, ou bien la combiner avec d'autres options avec l'opérateur OR ou AND, dans le paramètre flags. Exemples d'applications: On veut créér dans différentes variables des références aux clefs associatives nommées du tableau SUPERGLOBAL $_SESSION (pas un double à proprement parlé mais une "référence à"). Ainsi, supposons que nous avons ce tableau $_SESSION déclaré comme tel: $_SESSION = array( 'customer_zone_id' => 2, 'customer_country_id' => 76 ); Si l'on fait : echo $customer_zone_id ou echo $customer_country_id On sera face à deux variables vides (voir même à une erreur de UNDEFINED VARIABLES. TOUTEFOIS AVEC: $_SESSION = array( 'customer_zone_id' => 2, 'customer_country_id' => 76 ); extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS); Si l'on fait : echo $customer_zone_id ou echo $customer_country_id On sera face à des valeurs directement extraite de la variable $_SESSION Ainsi: echo $customer_zone_id // Donnera: 2 echo $customer_country_id // Donnera: 76 ET voilà, le problème des variables simples $ qui sont censées contenir les données de sessions, mais qui ne les avait pas est désormais résolu! Pour la petite explication, A l'époque sous PHP 5.3/5.2, OSCOMMERCE MS2.2 fonctionnait normalement, ... sauf que à l'époque toute la structure de stockage des sessions (et pas que) de OSCOMMERCE reposait sur l'utilisation ... (pourtant extrêmement dépréciée) de la directive register_globals. Ce qui, (nous le savons tous), est une directive absente car retirée dans PHP 5.4+ par souci de sécurité. Ainsi, les développeurs, pour simuler register_globals utilisent extract() pour référencer les données de $_SESSION dans des variables simples $comme_celle_la ! Bien que je sâches pertinement que ce n'est pas mieux sécurisé que d'utiliser register_globals, extract() a au moins le mérite de fonctionner avec PHP 5.4+ Ainsi, avoir adapté mon application_top.php pour référencer les variables (non déclarées) : $customer_ (et d'autres).. Via la fonction native PHP, extract(), qui était la seule et unique condition (à moins de procéder à un recodage du code exactement comme j'avais précisé et que tu reprécise dans ta citation qui me citait). En tout cas, viens dans mes bras que je "t'embrasse" Havock! C'est toi qui m'a mis sur la piste ! UN GRAND MERCI. (si une fois tu veux de l'aide en développement de modules, que ce soit pour OSCOMMERCE ou autres, n'hésite pas, préviens moi via la messagerie du forum, je serai content de te filer un coup de papattes!) Je vais enfin pouvoir passer à la suite de cette lourde tâche de conversion de cette copie de OSCOMMERCE MS2.2 (hautement modifiée) vers PHP 5.4. J'ai déjà fait les : Code eregi_replace ereg_replace ereg Il me reste: Code htmlentities utf8_decode utf8_encode htmspecialchars Et la plus lourde des tâches: Convertir de très vieilles contributions (paiements, fonctionnalités comme le MISE A JOUR RAPIDE (quick_update)..).. Du beau bowdel en perspective. Si j'ai d'autres problèmes, voir question, je reposterai ici! @Aux autres: Merci d'avoir essayé de m'aider, j'ai apprécié le geste ! ==== MESSAGE Edité pour ajouter une partie de mes notes personnelles pour les désireux de comprendre "pourquoi???" ça fonctionne avec extract(). Ce message a été modifié par SaphyraK - 13 May 2015, 06:52. -------------------- We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...) |
|
13 May 2015, 07:36
Message
#17
|
|
Ceinture marron OSC Groupe : Modérateurs Messages : 1543 Inscrit : 30-May 06 Lieu : Vichy (03) Membre no 10583 |
Re,
Dans application_top.php il y a extract. Mon fichier est assez modifié (c'est à partir fr la ligne 182 pour moi). C'est dans la section // start the session Code // start the session $session_started = false; if (SESSION_FORCE_COOKIE_USE == 'True') { tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain); if (isset($_COOKIE['cookie_test'])) { tep_session_start(); $session_started = true; } if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) { extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS); } Sinon, pour toi et pour Havock, je me souviens, à la lecture du dernier message, que j'ai aussi modifié mon fichier catalog/includes/functions/compatibility.php : Code // Recursively handle magic_quotes_gpc turned off. // This is due to the possibility of have an array in // $HTTP_xxx_VARS // Ie, products attributes function do_magic_quotes_gpc(&$ar) { if (!is_array($ar)) return false; while (list($key, $value) = each($ar)) { // if (is_array($value)) { // do_magic_quotes_gpc($value); if (is_array($ar[$key])) { do_magic_quotes_gpc($ar[$key]); } else { $ar[$key] = addslashes($value); } } } // $HTTP_xxx_VARS are always set on php4 if (!is_array($_GET)) $_GET = array(); if (!is_array($_POST)) $_POST = array(); if (!is_array($_COOKIE)) $_COOKIE = array(); if ( (PHP_VERSION >= 5.0) && function_exists('ini_get') && (ini_get('register_long_arrays') == false) ) { // $HTTP_GET_VARS =& $_GET; // $HTTP_POST_VARS =& $_POST; // $HTTP_COOKIE_VARS =& $_COOKIE; // $HTTP_SESSION_VARS =& $_SESSION; // $HTTP_SERVER_VARS =& $_SERVER; $HTTP_GET_VARS = &$_GET; $HTTP_POST_VARS = &$_POST; $HTTP_REQUEST_VARS = &$_REQUEST; $HTTP_SESSION_VARS = &$_SESSION; $HTTP_COOKIE_VARS = &$_COOKIE; $HTTP_SERVER_VARS = &$_SERVER; $HTTP_FILES_VARS = &$_FILES; $HTTP_ENV_VARS = &$_ENV; } Et pour le même fichier mais dans l'admin : Code //// // Recursively handle magic_quotes_gpc turned off. // This is due to the possibility of have an array in // $_XXX // Ie, products attributes function do_magic_quotes_gpc(&$ar) { if (!is_array($ar)) return false; while (list($key, $value) = each($ar)) { if (is_array($value)) { do_magic_quotes_gpc($value); } else { $ar[$key] = addslashes($value); } } } // $HTTP_xxx_VARS are always set on php4 if (!is_array($_GET)) $_GET = array(); if (!is_array($_POST)) $_POST = array(); if (!is_array($_COOKIE)) $_COOKIE = array(); // handle magic_quotes_gpc turned off. if (!get_magic_quotes_gpc()) { do_magic_quotes_gpc($_GET); do_magic_quotes_gpc($_POST); do_magic_quotes_gpc($_COOKIE); } Par contre je confirme que je n'ai pas fait de "mix" pour mes fichiers sessions.php Je les ai remplacé par ceux de la version 2.3 et çà fonctionne au poil. -------------------- Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse) Config 2 en local avec UwAmp : Osc Phoenix |
|
13 May 2015, 09:57
Message
#18
|
|
Ceinture bleue OSC Groupe : Membres Messages : 912 Inscrit : 4-February 04 Membre no 1926 |
@ SaphyraK : Content de t'avoir mis sur la piste.
@ Bonbec : Tu as mis l'intégralité de tes fichiers compatibility.php ou juste les parties modifiées ? Dans la fonction do_magic_quotes_gpc j'ai une ligne : reset($ar); avant la boucle while (tu l'a enlevée ?) Je ne suis pas certain de l'utilité de ton code : Code if (!is_array($_GET)) $_GET = array(); if (!is_array($_POST)) $_POST = array(); if (!is_array($_COOKIE)) $_COOKIE = array(); Les variables superglobales $_GET, $_POST et $_COOKIE ne sont elles pas par défaut des arrays ? Le code initial concernait les variables $HTTP_GET_VARS , $HTTP_POST_VARS et $HTTP_COOKIE_VARS et là le code pouvait se justifier pour des versions très anciennes de PHP Code if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array(); if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array(); if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array(); Dans ta partie : Code if ( (PHP_VERSION >= 5.0) && function_exists('ini_get') && (ini_get('register_long_arrays') == false) ) { // $HTTP_GET_VARS =& $_GET; // $HTTP_POST_VARS =& $_POST; // $HTTP_COOKIE_VARS =& $_COOKIE; // $HTTP_SESSION_VARS =& $_SESSION; // $HTTP_SERVER_VARS =& $_SERVER; $HTTP_GET_VARS = &$_GET; $HTTP_POST_VARS = &$_POST; $HTTP_REQUEST_VARS = &$_REQUEST; $HTTP_SESSION_VARS = &$_SESSION; $HTTP_COOKIE_VARS = &$_COOKIE; $HTTP_SERVER_VARS = &$_SERVER; $HTTP_FILES_VARS = &$_FILES; $HTTP_ENV_VARS = &$_ENV; } pourquoi testes-tu register_long_arrays à false ? Sinon c'est vrai que je n'ai pas mis les lignes : Code $HTTP_FILES_VARS = &$_FILES; $HTTP_ENV_VARS = &$_ENV; $HTTP_REQUEST_VARS = &$_REQUEST; Par cohérence dans le traitement des superglobales, il semble logique de mettre ces trois lignes en plus, mais as-tu eu une raison autre de les ajouter ? Sinon par rapport à la version 2.3.4 j'ai plusieurs fonctions que j'ai conservé bien que je pense que ce n'est pas utile (je pense que ces fonctions figurent dans compatibility.php pour des versions très anciennes de PHP) : Code if (!function_exists('array_splice')) { function array_splice(&$array, $maximum) { if (sizeof($array) >= $maximum) { for ($i=0; $i<$maximum; $i++) { $new_array[$i] = $array[$i]; } $array = $new_array; } } } if (!function_exists('in_array')) { function in_array($lookup_value, $lookup_array) { reset($lookup_array); while (list($key, $value) = each($lookup_array)) { if ($value == $lookup_value) return true; } return false; } } if (!function_exists('array_reverse')) { function array_reverse($array) { for ($i=0, $n=sizeof($array); $i<$n; $i++) $array_reversed[$i] = $array[($n-$i-1)]; return $array_reversed; } } if (!function_exists('constant')) { function constant($constant) { eval("\$temp=$constant;"); return $temp; } } if (!function_exists('is_null')) { function is_null($value) { if (is_array($value)) { if (sizeof($value) > 0) { return false; } else { return true; } } else { if (($value != '') && ($value != 'NULL') && (strlen(trim($value)) > 0)) { return false; } else { return true; } } } } if (!function_exists('array_merge')) { function array_merge($array1, $array2, $array3 = '') { if (empty($array3) && !is_array($array3)) $array3 = array(); while (list($key, $val) = each($array1)) $array_merged[$key] = $val; while (list($key, $val) = each($array2)) $array_merged[$key] = $val; if (sizeof($array3) > 0) while (list($key, $val) = each($array3)) $array_merged[$key] = $val; return (array) $array_merged; } } if (!function_exists('is_numeric')) { function is_numeric($param) { // return ereg('^[0-9]{1,50}.?[0-9]{0,50}$', $param); return preg_match('/^[0-9]{1,50}.?[0-9]{0,50}$/', $param); // PHP 5.3 } } if (!function_exists('array_slice')) { function array_slice($array, $offset, $length = 0) { if ($offset < 0 ) { $offset = sizeof($array) + $offset; } $length = ((!$length) ? sizeof($array) : (($length < 0) ? sizeof($array) - $length : $length + $offset)); for ($i = $offset; $i<$length; $i++) { $tmp[] = $array[$i]; } return $tmp; } } if (!function_exists('array_map')) { function array_map($callback, $array) { if (is_array($array)) { $_new_array = array(); reset($array); while (list($key, $value) = each($array)) { $_new_array[$key] = array_map($callback, $array[$key]); } return $_new_array; } else { return $callback($array); } } } if (!function_exists('str_repeat')) { function str_repeat($string, $number) { $repeat = ''; for ($i=0; $i<$number; $i++) { $repeat .= $string; } return $repeat; } } Sinon ma plus grosse interrogation est liée à l'aspect encodage des caractères. Concrètement je n'ai aucun intérêt spécifique à passer en UTF8 (surtout que d'après ce que j'ai lu il peut y avoir de grosses surprises lors des conversions de ISO 8859-1 vers UTF8 ; et je ne vois pas trop comment procéder sur un site live sans interruption prolongée). La logique veut que je reste en ISO 8859-1, mais j'ai un doute sur la nature des données stockées dans ma base. Ma base est ancienne et très volumineuse. Elle a été créé en latin1_swedish_ci (ce n'est pas moi qui avait créé la base initiale donc je ne sais pas pourquoi c'est swedish_ci ). Lors des évolutions successives et des changements de serveurs je n'ai jamais eu besoin de changer ce paramètre, mais je n'ai jamais poussé plus loin mes investigations. La question que je me pose vient du fait que j'ai constaté que sur mon serveur actuel les paramètres "jeu de caractères pour mysql" et "Interclassement pour la connexion au serveur" sont à UTF-8 Unicode Ma crainte est qu'avec ces paramètres à UTF8 j'ai stocké des données au format UTF8 dans ma base Je vais creuser la question, mais si vous vous y connaissez vos avis seront les bienvenus. -------------------- L'indispensable est en cours de traitement,
L'urgent sera traité demain, Le normal sera traité plus tard, Le reste on vera ... En conclusion : les journées sont trop courtes. Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-) |
|
14 May 2015, 15:42
Message
#19
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-November 07 Membre no 19732 |
Bonjour à tous,
àl'aide ce ce post et d'autres je suis en train de faire mon adaptation de oscommerce 2.2 vers php 5.4 et franchement... je galère. voilà où j'en suis : - remplacement de tous les ereg eregi selon les différentes contributions données, - de tous les mysql par mysqli, - de tous les $HTTP_*_VARS par $_GET, $_POST, $_COOKIE, $_ENV, $_FILES... là ma boutique s'affiche mais j'ai un problème de session, rien en se met au panier, je ne peux pas m'identifier et comme erreur j'ai ceci : select count(*) as total from sessions where sesskey = '' [TEP STOP] aussi bien sur le front-office que l'admin. C'est vrai que j'ai modifié X fois mes fichiers application_top.php et sessions, qui ont différé selon les contributions que j'ai parcourues et suivies. Du coup je ne sais plus quels sont les bons fichiers - au niveau des sessions - à utiliser... Entre nous soit dit, le fait qu'il y ait des contribs qui se "contredisent" ne me rassure pas. Par exemple pour application_top.php, j'ai bien modifié 2/3 fois le code original en supprimant à chaque fois le précédent. Et à chaque fois pour arriver au même but (être compatible php 5.4). J'ai l'impression qu'il n'y a pas un seul post avec une méthode, mais plusieurs qui se complètent et parfois, défont le travail déjà entrepris sur une contribution précédente. Ou alors c'est moi qui ai mal compris ce qu'il y a à faire (simple question auprès de vous, pas une 'accusation' envers les contributeurs - bien au contraire, merci à eux) ? Si quelqu'un pouvait me tuyauter sur mon problème session ou me mettre sur la voix, ce serait sympa, merci ! Bon courage à tous !! A bientôt amicalement |
|
15 May 2015, 11:07
Message
#20
|
|
Ceinture bleue OSC Groupe : Membres Messages : 912 Inscrit : 4-February 04 Membre no 1926 |
là ma boutique s'affiche mais j'ai un problème de session, rien en se met au panier, je ne peux pas m'identifier et comme erreur j'ai ceci : select count(*) as total from sessions where sesskey = '' [TEP STOP] aussi bien sur le front-office que l'admin. Bonjour à toi Effectivement ça ressemble très fortement à un soucis de sessions. As-tu essayé d'utiliser les fichiers de sessions de la version 2.3.4 ? Pour Bonbec et moi ça a l'air de marcher directement. -------------------- L'indispensable est en cours de traitement,
L'urgent sera traité demain, Le normal sera traité plus tard, Le reste on vera ... En conclusion : les journées sont trop courtes. Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-) |
|
18 May 2015, 14:43
Message
#21
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-November 07 Membre no 19732 |
Bonjour Havock,
merci déjà de l'intérêt porté à mon cas ! Ca fait plaisir Je viens d'essayer avec les 2 fichiers de session de oscommerce 2.3.4 : - ../admin/includes/functions/sessions.php - ../includes/functions/sessions.php A ce que je vois le fichier - ../admin/includes/classes/sessions.php a purement et simplement disparu que la 2.3.4... Effectivement je n'ai plus le message d'erreur, mais je ne peux toujours pas me connecter et m'identifier en front-office. Quant au back-office, j'ai désormais le message suivent en lieu et place du précédent : "local MySQL server through socket '/var/run/mysqld/mysqld.sock". Je continue à chercher... Cordialement Fabb |
|
18 May 2015, 14:49
Message
#22
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-November 07 Membre no 19732 |
Une question ?
Avez-vous modifié quoi que ce soit dans la base de données (ajout / modification de champs etc...), ou dans les requêtes vers celle-ci dans les fichiers php du site pour passer le site en php 5.4 ? |
|
18 May 2015, 16:11
Message
#23
|
|
Ceinture bleue OSC Groupe : Membres Messages : 912 Inscrit : 4-February 04 Membre no 1926 |
Bonjour fabbea
A ce que je vois le fichier - ../admin/includes/classes/sessions.php a purement et simplement disparu que la 2.3.4... A ma connaissance ce fichier ne sert effectivement plus. Avez-vous modifié quoi que ce soit dans la base de données (ajout / modification de champs etc...), ou dans les requêtes vers celle-ci dans les fichiers php du site pour passer le site en php 5.4 ? Non pour le passage à PHP 5.4 Effectivement je n'ai plus le message d'erreur, mais je ne peux toujours pas me connecter et m'identifier en front-office. Quant au back-office, j'ai désormais le message suivent en lieu et place du précédent : "local MySQL server through socket '/var/run/mysqld/mysqld.sock". Tu es en local ? Sur un serveur mutualisé ? Tu as changé de version de mysql ? Regarde du coté des fichier configure.php du front et de l'admin la ligne : Code define('DB_SERVER', 'localhost'); et essaye de remplacer localhost par 127.0.0.1 Code define('DB_SERVER', '127.0.0.1'); -------------------- L'indispensable est en cours de traitement,
L'urgent sera traité demain, Le normal sera traité plus tard, Le reste on vera ... En conclusion : les journées sont trop courtes. Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-) |
|
28 May 2015, 19:39
Message
#24
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 100 Inscrit : 6-November 12 Membre no 31715 |
Bonjour ici!
Bon, j'ai juste une petite question (je pense avoir éradiqué le problème, mais qui sait.. peut-être m'y prendrais-je mal).. Alors, cette question concerne l'attribut dans la barre d'adresse : osCAdminID Et évidemment, depuis la zone administrative. Pour être clair, voilà le comportement de mon tep_href_link() (celui dans admin/functions/html_output.php) sous PHP 5.2/PHP 5.3 : Il ajoute tout seul (et je ne l'explique pas), l'attribut osCAdminID dans les liens générés. Mais sous PHP 5.4+ il ne l'ajoute pas. Pour être encore plus clair, voici le code 'NON modifié': Code function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL') { if ($page == '') { die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>'); } if ($connection == 'NONSSL') { $link = HTTP_SERVER . DIR_WS_ADMIN; } elseif ($connection == 'SSL') { if (ENABLE_SSL == 'true') { $link = HTTPS_SERVER . DIR_WS_ADMIN; } else { $link = HTTP_SERVER . DIR_WS_ADMIN; } } else { die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>'); } if ($parameters == '') { $link = $link . $page . '?' . SID; } else { $link = $link . $page . '?' . $parameters . '&' . SID; } while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1); return $link; } ET le code dans la version que j'ai modifié: Code function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $ajout_osCAdminID = true) { if ($page == '') { die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>'); } if ($connection == 'NONSSL') { $link = HTTP_SERVER . DIR_WS_ADMIN; } elseif ($connection == 'SSL') { if (ENABLE_SSL == 'true') { $link = HTTPS_SERVER . DIR_WS_ADMIN; } else { $link = HTTP_SERVER . DIR_WS_ADMIN; } } else { die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>'); } if ($parameters == '') { $link = $link . $page . '?' . SID; } else { $link = $link . $page . '?' . $parameters . '&' . SID; } while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1); switch ($ajout_osCAdminID) { default: case true: if (!empty($_COOKIE['osCAdminID'])) { $http_attribute_character = ''; if (empty($parameters)) { $http_attribute_character = '?'; } else { $http_attribute_character = '&'; } $link = $link . $http_attribute_character . 'osCAdminID=' . $_COOKIE['osCAdminID']; } break; case false: // ne rien faire.. break; } return $link; } Ma version ajoute bien osCAdminID à la chaîne de l'URL générée (et fait aussi attention au caractère à insérer comme attribut: soit ? soit &). Il reste cependant que SID semble 'vide'.. Je ne sais même pas à quoi il sert. Qu'avez-vous fait de spécial dans vos fichiers de la zone admin ? includes/application_top.php includes/functions/general.php et éventuellement les endroits où vous avez utilisé extract() ? Merci d'avance ! -------------------- We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...) |
|
26 Jul 2015, 15:24
Message
#25
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 35 Inscrit : 15-December 08 Membre no 23957 |
J'ai posté ici : http://www.oscommerce-fr.info/forum/index....showtopic=71439
car je pensais que je ne serais pas au bon endroit en venant ici, mais je vois que vous parlez des fichiers de la version 2.3. Pour moi le fichier sessions ne fonctionnait pas, la session se créait mal en mettant certaines variables à Null. C'est la fonction tep_session_register qui me cassait tout. J'ai élagué pour ne garder que : Code function tep_session_register($variable) { global $session_started; if ($session_started == true) {$_SESSION[$variable] =& $GLOBALS[$variable];} return false; } Et maintenant ma session s'enregistre correctement, y compris le panier. -------------------- version 2.3
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 21:53 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |