Publicado el

Cómo actualizar Prestashop desde versiones muy antiguas 1.3.6.0 y siguientes

Migrar Prestashop versión 1.3.6 a 1.6.x

He encontrado tal cantidad de trampas, fallos, falsas informaciones, caminos que no conducen a ninguna parte que he decidido escribir lo que yo he hecho por si a alguien le puede servir. Creo que se lo debo a  esa gente desinteresada que me ha ayudado antes y siento que debo contribuir en lo que pueda.  Por cierto, por favor NO HAGAIS CASO de los videos en youtube que hablan de cómo actualizar prestashop desde versiones como la 1.3 o la 1.4. Es más, si alguien comenta aquí que ha seguido esos videos la respuesta por mi parte va a ser:

Te lo advertí, ya me pasó a mí y por eso he escrito esto en esta web. Comienza de nuevo. 

La idea básica de toda las migraciones es que hay que conseguir migrar hasta la versión 1.5.0 o superior donde ya tienes el módulo gratuito de prestashop 1-click-upgrade para poder migrar las versiones. El problema es que migrar de una 1.3.x a una 1.4.x (x= a cualquier numero) es un mundo porque no hay herramientas disponibles y tienes que actualizar la base de datos y las imágenes con mucho cuidado. Y lo mismo desde la 1.4.x a la 1.5.x .

Hay documentación oficial en el foro de prestashop. el problema está en que nadie detalla bien todos los pasos ni el entorno que utiliza. Yo voy a poner aquí todo lo que he hecho y cuándo me ha fallado, paso a paso, versión a versión.

Ah, a mí se suele molestar que lo pongan en blogs pero te lo digo: si no estás dispuesto a sufrir o no eres muy experto no te metas con esto. Lo vas a pasar mal. En cambio, si quieres aprender cómo funcionan las actualizaciones de prestashop, mysql, phpmyadmin y XAMPP pues te va a venir muy bien.

Pasos para ACTUALIZAR 1.3.X A 1.4.X

https://www.prestashop.com/forums/topic/85548-actualizar-version-de-prestashop/?hl=%2Bactualizar+%2Bversion+%2Bprestashop

Consejos valiosos para crear un entorno local donde probar la actualización:

1.-Haz todas las migraciones en un servidor local. Si usas XAMPP vete a c:\xampp\php edita php.ini y cambia estos DOS valores:

post_max_size=50M

upload_max_filesize=50M

2.- para que phpmyadmin, el gestor de mysql, no se quede colgado cuando importa la copia de seguridad de la base de datos pon esto en c:\xampp\phpmyadmin\config.inic.php

$cfg[‘ExecTimeLimit’] = 0;

(esto funciona en el servidor local para evitar time outs, significa que no se detenga nunca, tarde lo que tarde la importación) Yo he probado con un fichero sql de 20 Mb

Ya que estamos en config.inic.php aprovecha y ponlo (siempre en el servidor local) como debug activado:

@ini_set(‘display_errors’, ‘on’);

define(‘_PS_DEBUG_SQL_’, true);

 

3.- mysql puede quedarse colgado y no decírtelo, generando un montón de inconsistencias y errores, si no cambias esto en el fichero my.ini (que está en el panel de control de Xampp-> mysql-> config

4.- copia el fichero settings.inc.php que está en /Config, fuera de la carpeta porque te hará falta si falla la actualización. De hecho te va a fallar si no pones y si no están ya, antes de empezar, estas los líneas a mayores:

define(‘_PS_CACHING_SYSTEM_’, ‘MCached’);

define(‘_PS_CACHE_ENABLED_’, ‘0’);

 

5.- No saltes de versión. Si tienes como yo, la 1.3.6 procura actualizar a 1.3.7.0 y luego a la primera versión de 1.4.x. Hay un montón de cambios en la base de datos y hay que ir poco a poco. A partir de la 1.5.

Al pasar de 1.3.6.0 a 1.3.7.0 ya no puedo entrar en la opción del menú de Modulos. Esto se debe a que estas versiones cargan todos los módulos al acceder (estén activos o no) tal como explican aquí http://www.pabloblanco.es/prestashop-no-muestra-los-modulos

El caso es que como trabajamos en local (alguna ventaja teníamos que tener al ser precavidos) podemos borrar los modulos que no usamos para ver si se carga esta opción.

Más ejemplos de por qué debes ir paso a paso. Tienes que tener en cuenta los campos de “ps_configuration”. Una vez en la tabla, modifica el valor de los registros PS_SHOP_DOMAIN y PS_SHOP_DOMAIN_SSL sustituyendo el valor de ambos por: “localhost”. Pero estos campos no existen en la BBDD de la versión 1.3.6

6.- comprueba que config.inc para cambiar la ruta y los datos de acceso a la bbdd. Seguro que en local tienes que cambiar el valor de __PS_BASE_URI__

7.- haz una foto o una lista con los módulos instalados y activados que tienes en la tienda actual para luego saber cuáles tienes que ir activando manualmente y ver si son compatibles, corregir errores, pedir soporte al fabricante si lo has comprado aparte, etc.

8.- PERMISOS de los ficheros y carpetas en el servidor

Pues eso, que compruebes que tienes suficientes permisos, al menos de escritura, en las carpetas del servidor. Luego tendrás que volver a lo que tenías si no quieres que te hackeen.

9.- No siempre se copian todos los ficheros con el programa de FTP o de gestión de ficheros del servidor de hosting. Comprueba que descargas todos los de /img/p. Se sufre mucho cuando no aparecen las imágenes.

En los foros todo el mundo habla de regenerar el .htaccess cuando pierdes las imágenes. En realidad he comprobado científicamente que el fallo principal es la estructura de carpetas de las imágenes, que no suele copiarse via FTP porque es demasiado profunda: no se ha copiado la carpeta y subcarpetas completamente de {tutienda}/img/p

El otro fallo por lo que no se muestra en local bien la tienda es porque cambia el concepto de “raíz del servidor” en función de si hablamos del hosting o si hablamos de servidor local. Me explico:

Si en el hosting tienes la tienda en el raíz del servidor estará en alguna carpeta  como ../public_html/, la BASE_URI será “/”. Pero si esta tienda la tienes en un servidor local como XAMPP, la carpeta raíz no puede ser “/” (sin comillas) sino  “/{nombre de la carpeta}/” porque XAMPP reserva su carpeta raíz (llamada /htdocs/) para su pagina de inicio. Supongamos que tu tienda está creada en el servidor local en la carpeta “shop” en este caso es que tienes que cambiar en Preferencias del B.O. de prestashop asi:

Que se corresponde con este config.inc.php

<?php

 

define(‘__PS_BASE_URI__’, ‘/shop/’);

define(‘_THEME_NAME_’, ‘xxxx’);

define(‘_DB_NAME_’, ‘xxxx’);

define(‘_DB_SERVER_’, ‘localhost’);

define(‘_DB_USER_’, ‘xxx’);

define(‘_DB_PREFIX_’, ‘ps_’);

define(‘_DB_PASSWD_’, ”);

define(‘_DB_TYPE_’, ‘MySQL’);

define(‘_COOKIE_KEY_’, ’13Yrn5ErLWVVg0kRD1MVma2tJXs3wggUTM4Lew7cJJ0Uieu1SnqjPcIp’);

define(‘_COOKIE_IV_’, ‘cbaKZoKK’);

define(‘_PS_VERSION_’, ‘1.3.6.0’);

 

?>

 

 

 

Pasos a dar para actualizar prestashop 1.4.x a 1.6.x:

1º.- Haz la copia de seguridad de ficheros y base de datos completa.
2º.- Haz una copia en una carpeta aparte del fichero {donde tengas tu prestashop}/config/settings.inc.php

3º.- Descarga de la web prestashop.com/es/versiones-para-programadores la versión a la que quieres actualizar tu actual prestashop. Yo he hecho este tutorial con varias versiones desde la 1.3.6.0 hasta la 1.6. en este caso empiezo con la 1.3.7.0 hasta la versión 1.4.9.0, todas están en formato zip,  y súbela a la carpeta raiz de la instalación: la carpeta donde tienes el prestashop que quieres actualizar, en mi caso la versión 1.3.6.
4º.- Como se supone que te has bajado a tu servidor local la versión actual de prestashop y la nueva a la que quieres actualizar, desde el administrador de archivos descomprime la nueva versión, en mi caso el fichero comprimido se llama prestashop_1.4.9.0.zip. Como trabajas en local no tienes problema con borrar lo anterior pero si no es así: Espero que hayas hecho copia de seguridad de los ficheros de la antigua versión porque con esto sobreescribimos la anterior.
5º.- Vete al navegador y escribe  http://www.tudominio.com/install/ y accedes al instalador de prestashop donde te informa que se va a proceder a un update. Si no tiene habilitado la opción de Actualización es que algo HAS HECHO MAL. No está detectando los archivos de la versión antigua y cree que quieres hacer una nueva instalación. Vuelve al paso 2º y empieza de nuevo.
6º.- Si todo va bien va a avisarte de los módulos que no va a actualizar así que toma nota porque luego tendrás que revisarlos a mano y al final, si no ha dado ningún aviso de fallo, ya tendrás actualizada la versión de prestashop en local.
7º.- Renombra la carpeta admin a otro nombre (p.e. admin1234) y borra la carpeta admin de la versión anterior para no liarte y que use el nuevo nombre que hayas puesto. Ya sabes que Prestashop hace esto por ti a partir de la versión 1.5.x pero todavía estamos en la 1.4 con suerte, si te ha actualizado ya la versión. También tendrás que borrar la carpeta install.

8º.- A mí me salió toda la tienda web sin estilos CSS, sin imágenes y muy triste. Así que no te desanimes. Empieza por entrar en el backoffice y cambia:

  • Preferencias -> directorio de la aplicación PS, si en local lo tienes en Xampp y dentro de htdocs tienes la tienda recuerda poner entre // el nombre que hayas puesto (en mi caso /tamayo136/ y luego SEO y URLs para cambiar el dominio
  • Deshabilitar y habilitar Url Amigables
  • Regenerar miniaturas y mover las imágenes en Preferencias->imágenes

Prueba todas las zonas.. frontend y backend ( que estén todos los datos, productos, imágenes..etc ). En concreto (mucha suerte, hasta que no hice todo esto que te cuento fue un completo infierno)

9º.- ya tenemos la tienda en versión 1.4.9.0. Mi objetivo es migrarla a 1.5.x y luego, por fin, a la 1.6.x. Esto parece que es posible hacerlo con el modulo 1-click to upgrade:

http://addons.prestashop.com/es/5496-1-click-upgrade-autoupgrade.html

en mi caso no he podido dar el salto completo por lo que he tenido que ir de una version a la inmediatamente superior, p.e. 1.5.0 a 1.5.1 y luego de 1.5.1  a 1.5.2 así consigues que el módulo actualice la base de datos correctamente.

Versiones sucesivas que he ido actualizando:

1.3.6.0

1.3.7.0

1.4.1.0  (mismo instalador que 1.3.7.0 supongo que no se actualizó con la versión)

1.4.4.0 por algún motivo ha borrado el archivo /config/settings.inc.php así que pongo una copia y cambio el valor de la versión a define(‘_PS_VERSION_’, ‘1.4.4.1’); además me aseguro de cambiar el valor de server a define(‘_DB_SERVER_’, ‘localhost’); y empiezo de nuevo (pasos 1º a 9º)

Valores típicos de settings.inc.php

<?php

define(‘_DB_SERVER_’, ‘localhost’);

define(‘_DB_TYPE_’, ‘MySQL’);

define(‘_DB_NAME_’, ‘xxxxxx’);

define(‘_DB_USER_’, ‘xxxxxx’);

define(‘_DB_PASSWD_’, ‘XXXXXX’);

define(‘_DB_PREFIX_’, ‘ps_’);

define(‘_MYSQL_ENGINE_’, ‘MyISAM’);

define(‘_PS_CACHING_SYSTEM_’, ‘MCached’);

define(‘_PS_CACHE_ENABLED_’, ‘0’);

define(‘_MEDIA_SERVER_1_’, ”);

define(‘_MEDIA_SERVER_2_’, ”);

define(‘_MEDIA_SERVER_3_’, ”);

define(‘__PS_BASE_URI__’, ‘/tamayo136/’);

define(‘_THEME_NAME_’, ‘prestashop’);

define(‘_COOKIE_KEY_’, ’13Yrn5ErLWVVg0kRD1MVma2tJXs3wggUTM4Lew7cJJ0Uieu1SnqjPcIp’);

define(‘_COOKIE_IV_’, ‘cbaKZoKK’);

define(‘_PS_CREATION_DATE_’, ‘2016-07-26’);

define(‘_PS_VERSION_’, ‘1.4.5.1’);

define(‘_THEME_NAME_’, ‘prestashop’);

define(‘_DB_SERVER_’, ‘localhost’

1.4.5.1  Se queda sin terminar así que reviso los errores que se graban en la carpeta /log

1.4.6.2 hemos llegado hasta aquí y voy a probar a ver si ahora ya funciona el famoso modulo 1-click-upgrade

 

 

Así que voy a repetir los pasos 1º a 9º para llegar a la primera versión 1.5 y te cuento.

En efecto este método me ha funcionado también para esta migración.

Paso a Producción:

Lo siguiente es que tienes que subir los ficheros y la base de datos al servidor de verdad, de producción. Para ello:

a.- comprimir todos los ficheros de la tienda local actualizada

b.- subirlos via ftp y descomprimir

c.- borra la base de datos del servidor (todas las tablas, deja solo la base de datos vacía). Importa la base de datos del servidor local

d.- prueba todo y suerte, la vas a necesitar

Si te ha servido comparte