Jump to content

Soucis lors du rapatriement en Local


Xelp59

Recommended Posts

Bonjour,

 

Dans le cadre de la mise en place d'une plateforme de PRE-PROD pour un site qui est déjà en production, j'ai récupéré un Prestashop en ligne et le passer sous WAMP.

 

Version de Prestashop : 1.5.6.1
Version du serveur : Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.12

 

J'ai paramétré mon Wamp afin d'avoir une config la plus proche de celle de production, nommé les  bases de données ont de façon identique. J'utilise le hostname de ma machine pour accéder au Presta et non "Localhost" afin que les autres personnes qui travaillent avec moi puisse y accéder.

 

J'ai également vidé les dossiers cache\smarty\compile et \cache\smarty\cache

 

La partie Admin fonctionne partiellement, j'ai parfois quelques erreurs.

Quand à la partie Front, impossible d'y accéder, voici le message d'erreur en PJ pour la partie front. 


( ! ) Fatal error: Call to undefined method Cart::getBaseOrderTotal() in C:\wamp\www\_xxxxx\modules\blockcart\blockcart.php on line 118
Call Stack
# Time Memory Function Location
1 0.0005 139480 {main}( ) ..\index.php:0
2 0.0686 4368232 DispatcherCore->dispatch( ) ..\index.php:29
3 0.0731 4765560 ControllerCore->run( ) ..\Dispatcher.php:348
4 0.0950 7373192 IndexControllerCore->initContent( ) ..\Controller.php:169
5 0.0951 7373416 FrontControllerCore->initContent( ) ..\IndexController.php:37
6 0.2491 13722688 HookCore::exec( ) ..\FrontController.php:436
7 0.2528 13765096 BlockCart->hookTop( ) ..\Hook.php:475
8 0.2528 13765152 BlockCart->hookRightColumn( ) ..\blockcart.php:228
9 0.2529 13766024 BlockCart->assignContentVars( ) ..\blockcart.php:188
 
 

 

Auriez vous quelques conseils s'il vous plait ?

Par avance, merci =)

post-1309416-0-02029800-1474021701_thumb.png

Edited by Xelp59 (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Certains diront tout d'abord de passer en 1.6. Mais parfois il y a des contraintes.

Si tu as essayé de faire un quasi iso-prod, force est quand même de constater que tu es en windows. Quid du serveur originel ?

As tu vérifié les directives php du serveur originel et qu'elles soient iso sur ton windows ?

Puisque on a une version en prod, peut être au moins installer sur ta machine la 1.5.6.3 ? (https://github.com/PrestaShop/PrestaShop-1.5)

 

Enfin, pourrais tu STP mettre un copier coller du code de modules/blockcart/blockcart.php des lignes 102 à 126.

Y'a un truc bizarre...

Merci

Link to comment
Share on other sites

Merci Arnaud pour ta réponse,

 

En effet, au début j'étais parti sur un serveur Linux meme virtuel avec un VWMARE par exemple mais on m'a suggéré WAMP ...

J'avais fais un petit point sur la config du serveur distant avec par exemple :

 

Linux #1 SMP Debian 3.2.60-1+deb7u3 x86_64 par exemple.

 

Concernant l'évolution du PS, ca n'est pas à l'ordre du jour à la DSI ...

 

Voici les lignes demandées : 

$this->smarty->assign(array(
'products' => $products,
'customizedDatas' => Product::getAllCustomizedDatas((int)($params['cart']->id)),
'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_,
'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_,
'discounts' => $cart_rules,
'nb_total_products' => (int)($nbTotalProducts),
'shipping_cost_base' => $shipping_cost_base,
'shipping_cost' => $shipping_cost,
'shipping_cost_float' => $shipping_cost_float,
'show_wrapping' => $wrappingCost > 0 ? true : false,
'show_tax' => (int)(Configuration::get('PS_TAX_DISPLAY') == 1 && (int)Configuration::get('PS_TAX')),
'wrapping_cost' => Tools::displayPrice($wrappingCost, $currency),
'product_total' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::BOTH_WITHOUT_SHIPPING), $currency),
'total' => Tools::displayPrice($totalToPay, $currency),
'total_wt' => Tools::displayPrice($params['cart']->getBaseOrderTotal(false, Cart::BOTH_WITHOUT_SHIPPING), $currency),
'order_process' => Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'order-opc' : 'order',
'ajax_allowed' => (int)(Configuration::get('PS_BLOCK_CART_AJAX')) == 1 ? true : false,
'static_token' => Tools::getToken(false),
'smallSize' => Image::getSize('small_default'),
'static_token' => Tools::getToken(false)

Merci encore =)

Link to comment
Share on other sites

Le conseil Wamp n'est à mon avis pas le plus judicieux, mais le DSI décide !

Sinon, le bloc a été retouché :

tu as ça :

'ajax_allowed' => (int)(Configuration::get('PS_BLOCK_CART_AJAX')) == 1 ? true : false,
'static_token' => Tools::getToken(false),
'smallSize' => Image::getSize('small_default'),
'static_token' => Tools::getToken(false)

Avec 2 fois le static_token d'ailleurs, et un shipping_cost_base ajouté (entre autres détails)

au lieu de ça :

'ajax_allowed' => (int)(Configuration::get('PS_BLOCK_CART_AJAX')) == 1 ? true : false,
'static_token' => Tools::getToken(false)

Sinon, en 118, c'est al récup d'un paramètre, rien d'exceptionnel, mais juste avant on a bien ton getBaseOrderTotal.

Où est cette fonction ? Cherche là, elle devrait être dansclasses/Cart.php, en toute logique...

Si non, alors faire une recherche dans les classes qui ont été modifiées, via une recherche windows

Link to comment
Share on other sites

Merci pour ta réponse,

 

Entre temps j'ai pu faire quelques corrections suite à la constatation d'un autre bug dans le back office 

Maintenant j'ai ceci : 

 

[PrestaShopDatabaseException]

Erreur de syntaxe près de 'AND fs.id_shop=1' à la ligne 1

SELECT fvl.value, fv.id_feature FROM ps_feature_value_lang AS fvl INNER JOIN ps_feature_value AS fv ON fvl.id_feature_value=fv.id_feature_value INNER JOIN ps_feature_product AS fp ON fp.id_feature_value=fvl.id_feature_value INNER JOIN ps_feature_shop AS fs ON fs.id_feature=fv.id_feature WHERE fvl.id_lang=1 AND fp.id_product= AND fs.id_shop=1

at line 613 in file classes/db/Db.php
607.             WebserviceRequest::getInstance()->setError(500, '[SQL Error] '.$this->getMsgError().'. From '.(isset($dbg[3]['class']) ? $dbg[3]['class'] : '').'->'.$dbg[3]['function'].'() Query was : '.$sql, 97);
608.         }
609.         else if (_PS_DEBUG_SQL_ && $errno && !defined('PS_INSTALLATION_IN_PROGRESS'))
610.         {
611.             if ($sql)
612.                 throw new PrestaShopDatabaseException($this->getMsgError().'<br /><br /><pre>'.$sql.'</pre>');
613.             throw new PrestaShopDatabaseException($this->getMsgError());
614.         }
615.     }
616.
617.     /**

La  fonction dont tu parles est dans \override\classes\cart.php ... 

 public function getBaseOrderTotal($with_taxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true)
{
     if (!$this->id)
     return 0;
    
    $type = (int)$type;
    $array_type = array(
    Cart::ONLY_PRODUCTS,
    Cart::ONLY_DISCOUNTS,
    Cart::BOTH,
    Cart::BOTH_WITHOUT_SHIPPING,
    Cart::ONLY_SHIPPING,
    Cart::ONLY_WRAPPING,
    Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING,
    Cart::ONLY_PHYSICAL_PRODUCTS_WITHOUT_SHIPPING,
    Cart::ONLY_PRODUCTS_WITHOUT_NEGATIVE
 
     );
Edited by Xelp59 (see edit history)
Link to comment
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
×
×
  • Create New...