{"id":479,"date":"2016-06-03T15:26:14","date_gmt":"2016-06-03T14:26:14","guid":{"rendered":"http:\/\/capri.dev\/blog\/?p=479"},"modified":"2022-11-01T22:33:08","modified_gmt":"2022-11-01T21:33:08","slug":"problemas-para-instalar-prestashop-1-6-0-6-en-ubuntu-16-04","status":"publish","type":"post","link":"https:\/\/capri.dev\/blog\/problemas-para-instalar-prestashop-1-6-0-6-en-ubuntu-16-04\/","title":{"rendered":"Problemas para instalar Prestashop 1.6.0.6 en Ubuntu 16.04"},"content":{"rendered":"<p>Resumen r\u00e1pido si no quieres perder tiempo: No lo intentes, usa Ubuntu 15.10 y todo ir\u00e1 a la perfecci\u00f3n.<\/p>\n<p><strong>La historia<\/strong><\/p>\n<p>Al intentar migrar la versi\u00f3n de Prestashop 1.6.0.6 a un VPS con Ubuntu 16.04 surgen multitud de problemas que conviene tener en cuenta si lo que queremos es migrar la tienda a un nuevo hosting sin realizar una actualizaci\u00f3n  a la \u00faltima versi\u00f3n disponible (1.6.1.5 a fecha de hoy).<\/p>\n<p><!--more--><\/p>\n<p>La primera pregunta que surge es: si hay problemas con esa versi\u00f3n antigua, \u00bfpor qu\u00e9 no actualizarla antes de realizar la migraci\u00f3n?. La respuesta es sencilla: un cambio de hosting es una operaci\u00f3n relativamente sencilla y poco costosa, mientras que una actualizaci\u00f3n de Prestashop puede resultar bastante compleja y cara en recursos y tiempo, por lo que conviene planificarla, sobre todo cuando se actualiza de una versi\u00f3n muy antigua (la 1.6.0.6 es de hace 2 a\u00f1os -2014-)<\/p>\n<p>La segunda pregunta que surge es: si hay problemas instalando en Ubuntu 16.04, \u00bfpor qu\u00e9 no hacerlo en una versi\u00f3n anterior de Ubuntu?. Efectivamente al final es lo que termin\u00e9 haciendo pues resulta que la instalaci\u00f3n en esta versi\u00f3n  resulta m\u00e1s cara que el posible beneficio de utilizar la \u00faltima versi\u00f3n de este S.O.<\/p>\n<p>En cualquier caso quiero dejar constancia de los problemas con los que me encontr\u00e9 por si a alguien le resultan interesantes.<\/p>\n<p>Lo que realmente hice fue instalar una versi\u00f3n limpia de PS 1.6.0.6 para ver si surg\u00eda alg\u00fan problema y proceder a la migraci\u00f3n en caso de que todo fuera bien. En caso de ir mal una instalaci\u00f3n limpia y de ser incapaz de solucionar los problemas, directamente desistir\u00eda de la migraci\u00f3n, que como digo, fue lo que finalmente ocurri\u00f3.<\/p>\n<p><strong>1. El problema con PHP5<\/strong><\/p>\n<p>El primer problema con el que me encontr\u00e9 es que <strong>PHP5 ya no es una opci\u00f3n con Ubuntu 16.04<\/strong>. Al menos no desde los repositorios oficiales accesibles con apt-get, as\u00ed que si quer\u00eda usar PHP5 tendr\u00eda que compilarlo, y yo no estaba por la labor, as\u00ed que decid\u00ed probar con PHP7. Para mi sorpresa, esto no supuso ning\u00fan problema, excepto&#8230;<\/p>\n<p><strong>2. El problema con SimpleXMLElement<\/strong><\/p>\n<p>La instalaci\u00f3n se bloqueaba en los primeros pasos. En el log de errores de Apache se pod\u00eda leer:<\/p>\n<pre class=\"prettyprint\">[Wed Jun 01 13:36:58.391984 2016] [:error] [pid 15802] [client 83.59.217.153:55071] PHP Fatal error:  Class 'SimpleXMLElement' not found in \/midominio.com\/www\/install\/classes\/simplexml.php on line 27\n<\/pre>\n<p>Me cost\u00f3 poco esfuerzo averiguar que la clase SimpleXMLElement ya no viene por defecto en PHP7, as\u00ed que hay que instalarla manualmente:<\/p>\n<pre class=\"prettyprint lang-bash\">apt-get install php-simplexml\n<\/pre>\n<p>Lo cual me permiti\u00f3 seguir adelante hasta que, al llegar al 45% del proceso los problemas volv\u00edan a aparecer&#8230;<\/p>\n<p><strong>3. El error \u00abxxx\/install\/sandbox\/anything.php&#8217; not found or unable to stat\u00bb<\/strong><\/p>\n<p>La instalaci\u00f3n se quedaba al 45%, y en el log de errores de Apache pod\u00eda leerse:<\/p>\n<pre class=\"prettyprint\">[Wed Jun 01 13:50:30.802896 2016] [:error] [pid 18616] [client 83.59.217.153:55263] script '\/midominio.com\/www\/install\/sandbox\/anything.php' not found or unable to stat, referer: http:\/\/midominio.com\/install\/index.php\n<\/pre>\n<p>mientras que en el log de instalaci\u00f3n de la aplicaci\u00f3n:<\/p>\n<pre class=\"prettyprint\">*ERROR* \t2016\/06\/01 - 13:51:26: No se puede crear la cuenta de administrador\n<\/pre>\n<p>Despu\u00e9s de dar muchas vueltas di con que el instalador intenta insertar un registro para representar la cuenta del administrador en la tabla ps_employee usando la fecha 0000-00-00 en los campos stats_compare_from y stats_compare_to. Esta fecha es inv\u00e1lida para MySQL 5.7, que es la versi\u00f3n del servidor MySQL que se instala por defecto en Ubuntu 16.04 con:<\/p>\n<pre class=\"prettyprint lang-bash\">apt-get install mysql-server\n<\/pre>\n<p>Revisando la documentaci\u00f3n de MySQL encontr\u00e9 que pod\u00eda a\u00f1adir un modo sql al arranque del SGBD que permitiera insertar este tipo de fechas que antes eran v\u00e1lidas y ya no lo son m\u00e1s. Para solucionarlo cre\u00e9 el fichero \/etc\/mysql\/conf.d\/mysql_prestashop.cnf con el siguiente contenido:<\/p>\n<pre class=\"prettyprint\">[mysqld]\nsql-mode=\"ALLOW_INVALID_DATES\"\n<\/pre>\n<p>Despu\u00e9s de reiniciar MySQL pude comprobar que el problema se solucionaba y permit\u00eda finalizar el proceso de instalaci\u00f3n. \u00a1Bieeeen!. Por cierto, para m\u00e1s informaci\u00f3n sobre ALLOW_INVALID_DATES: <a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/sql-mode.html#sqlmode_allow_invalid_dates\" title=\"http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/sql-mode.html#sqlmode_allow_invalid_dates\" target=\"_blank\" rel=\"noopener\">http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/sql-mode.html#sqlmode_allow_invalid_dates<\/a><\/p>\n<p><strong>4. El problema con ALTER IGNORE TABLE<\/strong><\/p>\n<p>Ya ten\u00eda instalado mi Prestashop 1.6.0.6 limpio y pod\u00eda navegar sin problemas por el backend y frontend fluidamente, as\u00ed que parec\u00eda que ya todo ir\u00eda sobre ruedas. Lo \u00faltimo que quer\u00eda hacer era realizar una prueba de actualizaci\u00f3n a la \u00faltima versi\u00f3n de Prestashop porque, a fin de cuentas, tarde o temprano tendr\u00eda que realizar esta operaci\u00f3n, as\u00ed que \u00bfpor qu\u00e9 no probarla ya?. La sopresa fue grande: Me encontr\u00e9 con que no se actualizaba ninguno de los m\u00f3dulos debido a que el actualizador tiraba m\u00faltiples errores SQL en todas las l\u00edneas del instalador que conten\u00edan la orden MySQL \u00abALTER IGNORE TABLE\u00bb.<\/p>\n<p>Despu\u00e9s de leer sobre los perjuicios de permitir que esta orden se ejecute de manera autom\u00e1tica sin control humano (explicaci\u00f3n de por qu\u00e9 los desarrolladores de MySQL han decidido quitarla despu\u00e9s de marcarla como DEPRECATED durante varias versiones anteriores) y de -a pesar de todo- intentar encontrar un sql-mode que permita ejecutar estas consultas sin suerte, decid\u00ed que no hab\u00eda soluci\u00f3n posible usando MySQL 5.7, as\u00ed que me dispuse a usar MySQL 5.6, que aun permit\u00eda la ejecuci\u00f3n de este tipo de consultas. Desinstal\u00e9 la versi\u00f3n 5.7 y me dispuse a instalar la 5.6&#8230;<\/p>\n<pre class=\"prettyprint lang-bash\">apt-get remove mysql-server-5.7\napt-get install mysql-server-5.6\n<\/pre>\n<p>Mala suerte&#8230; el sistema me inform\u00f3 que mysql-server-5.6 no est\u00e1 en el repositorio de aplicaciones de Ubuntu 16.04, as\u00ed que si lo quer\u00eda tener tendr\u00eda que compilarlo. &#8230; Junto con todas sus dependencias. &#8230; Que pod\u00edan romper otras partes del sistema. &#8230; Me di por vencido. Despu\u00e9s de todo el esfuerzo, la conclusi\u00f3n termin\u00f3 siendo que era mejor tirar la toalla con Ubuntu 16.04 e ir con Ubuntu 15.10 hasta que tuviera actualizada la tienda a la \u00faltima versi\u00f3n de PS y pudiese volver a hacer pruebas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Resumen r\u00e1pido si no quieres perder tiempo: No lo intentes, usa Ubuntu 15.10 y todo ir\u00e1 a la perfecci\u00f3n. La historia Al intentar migrar la versi\u00f3n de Prestashop 1.6.0.6 a un VPS con Ubuntu 16.04 surgen multitud de problemas que conviene tener en cuenta si lo que queremos es migrar la tienda a un nuevo hosting sin realizar una actualizaci\u00f3n a la \u00faltima versi\u00f3n disponible (1.6.1.5 a fecha de hoy).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[135,70,198],"class_list":["post-479","post","type-post","status-publish","format-standard","hentry","category-tecnico","tag-errores-prestashop","tag-migrar-prestashop","tag-tiendas-virtuales"],"_links":{"self":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/posts\/479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/comments?post=479"}],"version-history":[{"count":0,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/posts\/479\/revisions"}],"wp:attachment":[{"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/media?parent=479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/categories?post=479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/capri.dev\/blog\/wp-json\/wp\/v2\/tags?post=479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}