Atributos personalizados muy largos no se guardan en Magento

Atributos de opciones personalizadas muy largas en Magento no se guardan

Cuando una lista de atributos personalizados es muy larga en Magento (atributos personalizados en menú dropdown) puede convertirse en un problema. Por ejemplo, si una lista requiere tener una gran cantidad de atributos, la página puede quedarse sin responder.

Este es un problema común para sitios que tienen lista de atributos largos y complejos. Los errores más comunes en este caso son:

  • Magento se queda «trabado» al añadir nuevos atributos
  • Magento se queda trabajando
  • Magento marca un error de timeout
  • Magento manda error de demasiados atributos
  • Magento manda error de límite en atributos de opciones

El problema se ocasiona debido a que Magento pasa todos las atributos personalizados a través de la URL, consumiendo el limite normal asignado en php. Este límite es colocado por los proveedores de hospedaje web para para mitigar de mejor manera posibles ataques de saturación o denegación de servicio DDoS; el límite usual es de 1000. Este límite se aplica a $_GET, $_POST y $_COOKIE separadamente.

Una manera de solucionar este error en Magento es añadir al archivo php.ini las siguientes líneas (o modificarla, en caso ya exista)

max_input_vars = 100000
suhosin.post.max_vars = 100000
suhosin.request.max_vars = 100000

memory_limit = 256M

max_execution_time = 3600
max_input_time = 600

post_max_size = 512M

Si el archivo php.ini no es visible, puedes crearlo al nivel raíz de tu cuenta de hospedaje. Estas líneas solucionarán el problema en Magento siempre y cuando tu proveedor de hospedaje web permita modificar esos valores.

Esta modificación dejará a tu sitio potencialmente más vulnerable pero hay muy pocas opciones en este escenario.

 

Actualiza tu sitio Magento ahora

Actualiza tu sitio Magento ahora

Magento ha colocado ya como disponibles su nueva actualización y parches para incrementar la seguridad y funcionalidad de los sitios que usan Magento como base. Aunque no hay ataques confirmados y relacionados con algunos puntos inseguros del actual script, ciertas vulnerabilidades pueden ser utilizadas para obtener información de acceso del usuario y apropiarse de las sesiones del administrador. Los problemas de inseguridad varían de acuerdo a los productos y las versiones de Magento. Los articulos completos de seguridad sobre Magento 1.x y Magento 2.x fueron colocados en el Magento Security Center. De forma adicional, todas las nuevas versiones y un parche USPS separado soportan ya los cambios recientes USPS.

El Magento Community Edition 2.0.1 incluye también actualizaciones importantes en funcionalidad, algunas de ellas son el soporte oficial al PHP 7.0.2, que proporciona una dramática mejora en la funcionalidad, reduce drásticamente el consumo de memoria y nuevas características de esa nueva versión de PHP.

Los parches SUPEE-7405 y SUPEE-7616 están disponibles para abordar problemas de seguridad y de USPS en las ediciones Community 1.5.0.0-1.9.2.2. Estos dos parches están ya incluídos en la Community Edition 1.9.2.3 y en la Community Edition 2.0.1

Asegúrate de instalar todos los parches previos. Los parches deben, de acuerdo a las mejores prácticas, instalarse y ser probadas en un ambiente de desarrollo antes de ser colocadas en producción.

Magento: No se puede entrar al panel de administración

Magento

No se puede entrar al panel de administración

Mi sitio Magento ha estado trabajando normal por meses. De repente, un día fue imposible entrar al administrador. Simplemente no entra y no muestra ningún error. Las causas probables de este problema son:

  • Estabas trabajando en el administrador y por alguna razón en el servidor o tu navegador, el funcionamiento se detuvo. Elimina las sesiones que tengas en var/session.
  • La hora en tu equipo de cómputo local y el servidor no coinciden, lo cual causa al instante una cookie inválida. Asegúrate que la hora del servidor es correcta.
  • Permisos incorrectos en var/session, lo que evita que los archivos de sesión sean guardados.
  • Configuración incorrecta de almacenamiento de sesión en database/redis/other lo que impide que se guarde la sesión.
  • Un módulo está instanciando sesiones muy rápido, previniendo que se coloquen los nombres correctos de sesión.
  • Eres un desarrollador y estás utilizando muchas URLs y tienes muchas cookies de dominio.
  • Otro desarrollador ha modificado de alguna manera el  app\code\core\Mage\Core\Model\Session\Abstract\Varien.php, creando así un problema muy difícil de localizar.
  • La cookie de dominio en System -> Configuration -> Web -> Session Cookie Management no es similar al nombre de dominio actual.
  • Estás utilizando localhost como tu servidor de dominio y utilizas una versión de webkit que tiene problemas/bugs al colocar cookies para localhost en algunas situaciones.

La solución más rápida es eliminar la cookie para ese dominio. A menudo eso soluciona el problema. Si persiste, debes revisar si alguna de las razones listadas aquí son la causa del error y tomar los pasos para solucionarlo (corregir permisos, por ejemplo).

 

Magento: Error 503 – Service Temporarily Unavailable

Magento

Error 503 – Service Temporarily Unavailable

Este error puede deberse a un problema directamente en el servidor donde te alojas o en la capacidad de tu cuenta, digamos, saturación de espacio de disco duro.

Sin embargo, si estás seguro que el servidor está bien y que tienes recursos suficientes, entonces intenta lo siguiente:

En el directorio raíz de Magento busca el archivo maintenance.flag.  Quita el archivo, bórralo, y tu sitio volverá a la normalidad.

 

Parche de seguridad de Magento – Actualización Urgente

Parche de seguridad de Magento

Instala el nuevo parche de seguridad de inmediato

Hoy se ha liberado el parche de seguridad SUPEE-6482 que soluciona 4 problemas de seguridad identificados con anterioridad. El parche soluciona dos fallas en la seguridad relacionados con APIs y dos riesgos de cross-site scripting. Hasta el momento, no existen reportes confirmados de ataques relacionados a estos riegos de seguridad, pero es muy importante instalar los parches de inmediato para proteger tu tienda.

Asegúrate de implementar y probar el parche de seguridad en un ambiente de seguridad primero para confirmar que su funcionamiento es el esperado, y así proceder con el sitio real.

Puedes descargar el aquí el parche de seguridad: https://www.magentocommerce.com/download

Emails enviados vía Cron Job en Magento 1.9.1

Emails enviados vía Cron Job en Magento 1.9.1

Si tienes instalada la versión 1.9.1, ya sea porque has actualizado o instalaste de cero esta versión, debes saber que el mecanismo de envío de mensajes de correo ha sido modificado. Primeramente, los mensajes de email son ahora responsiveos, ya que una gran mayoría de personas ve esos mensajes en dispositivos móviles. Como segundo punto, y mucho más importante, todos los mensajes de correo, incluyendo los mensajes transaccionales (que incluyen los de compra en tu tienda), son enviados vía CRON job.

Si estás teniendo problemas con los mensajes enviados por Magento y tus clientes no los están recibiendo, debes revisar o configurar los CRON jobs en tu cuenta de hospedaje, para confirmar que están trabajando apropiadamente.

Los mensajes de contacto se envían de manera distinta a este procedimiento, se envían sin ser encolados.

Es decir, a partir de esta versión de Magento, todos los mensajes serán encolados (queued), por lo que su envío dependerá del intervalo colocado en el CRON job. Por lo general, las cuentas de hospedaje tienen como tiempo mínimo de verificación de CRON jobs cada 15 minutos, por lo que debes utilizar esta configuración. Puede resultar un poco raro que los correos no sean enviados de manera inmediata al realizar, por ejemplo, una compra, que es a lo que se está acostumbrado, pero es la manera en que se entregan los mensajes en Magento a partir de esta versión.

Revisando los Cron Jobs configurados en Magento

Por defecto, Magento configura los Cron jobs (Mage_cron), lo cual puedes confirmarlo en System-> Advanced -> Cron (Scheduled Tasks), en tu administración de Magento.

Cómo está configurado el Cron Job en cPanel

Este es muy fácil de investigar. Entra a tu panel de control cPanel y busca el icono Cron Jobs o tareas programadas. Confirma que tienes allí configurada la opción correcta ejecutándose a los intervalos apropiados. Toma nota que debes apuntar hacia la página cron.php en el directorio raíz de Magento utilizando una ruta absoluta.

cron-php

Encuentras más información sobre la configuración de Cron jobs en Magento en la liga siguiente:
http://support.xtento.com/wiki/Setting_up_the_Magento_cronjob#My_cronjob_doesn.27t_work._What_can_I_do.3F

Error 500 Internal Server en Magento Community, causas comunes

Error 500 Internal Server Error En Magento Community

Causas comunes

Muchos usuarios encuentran el error 500 Internal Server en Magento cuando actualizan el script, algún plugin o un tema. La mayoría de estos errores tienen como causa común el plugin Magento Downloader (accesible vía Magento Connect).

La primera recomendación, el primer paso, es que veas siempreel log de errores en el servidor, en tu cuenta de hospedaje web, y tratar de obtener alguna orientación sobre el tipo de error. Puedes obtener información adicional sobre este error habilitando el «Developer Mode». Mira el Magento bootstrap (el archivo index.php) utilizando un programa FTP o mediante el Administrador de Archivos y ubica las siguiente líneas o algo muy similar a ellas:

#Mage::setIsDeveloperMode(true);
#ini_set(‘display_errors’, 1);

Quita el # que encabeza las líneas y guarda el archivo PHP. Por supuesto, en un ambiente ya en producción no deseas mostrar a tus usuarios los errores que pudieran existir, pero será de invaluable ayuda tener el error en la pantalla. De esta manera, podrás ver la causa del error 500.

Las opciones que listamos aquí son solamente una guía. No olvides tener siempre un respaldo de tu sitio.

Primera Causa: Permisos

Este error puede ser causado por permisos incorrectos en las carpetas de Magento.

Puedes colocar los permisos correctos vía el Administrador de Archivos en el archivo index.php de 664 hacia 755. También cambia los permisos en el archivo index.php dentro de la carpeta Downloader hacia 755 ya que de no hacerlo al tratar de accesar a System > Magento Connect >Magento Connect Manager  (a donde llegas después de la instalación) vía la administración, tendrás el error 500 Internal Server.

Puedes también tratar con la siguiente herramienta, una utilidad llamada Magento Cleanup. Esta herramienta colocará automáticamente los permisos correctos para la instalación completa de Magento.

1. Descarga la herramienta aquí: [http://www.snellmitchell.co/wp-content/uploads/2015/04/magento-cleanup.zip]
2. Desempaca el archivo ZIP en el directorio raíz de la instalación de Magento.
3. Navega hacia http://tudominio.com/carpetaconmagento/magento-cleanup.php y hazlo trabajar.

Segunda Causa: Permisos

Es posible que tu cuenta de hospedaje o servidor no soporte alguna de las especificaciones de Magento –por lo general se mostrará antes de realizar la instalación y se da comúnmente cuando has instalado Magento utilizando un instalador automático. Puedes fácilmente comprobar fácilmente esto utilizando la utilidad Magento Check y te mostrará si el servidor soporta o no plenamente Magento.

Sigue los siguientes pasos para checar alguna incompatibilidad:

1. Descarga la herramienta aquí: [http://www.techjam.gr/techjamwp/wp-content/uploads/2012/04/magento-check.zip]
2. Desempaca el archivo ZIP en el directorio raíz de la instalación de Magento.
3. Navega hacia http://tudominio.com/carpetaconmagento/magento-check.php y hazlo trabajar.

Tercera Causa: Recursos

Si obtienes el error 500 internal server sólo ocasionalmente o en páginas específicas, podría ser un asunto de recursos. Revisa el valor que tengas asignado a php_value_memory_limit. Por lo general, en hospedaje web compartido ese valor es 32M, súbelo a 64. Los recursos asignados a una cuenta de hospedaje web compartido son limitados y es probable que tu sitio Magento requiera mucha más memoria, digamos 256M. Magento es un script que requiere y utiliza muchos recursos. La combinación de cantidad de información y visitas podría hacer necesario contar con un servidor dedicado o semidedicado para tu tienda.

Cuarta Causa: Errores en Htaccess

Existe un archivo en el directorio raiz que lleva el nombre de .htaccess. Si tienes un error 500 Internal Server el problema podría radicar allí. Primero, confirma que el archivo existe en el directorio raíz. Los archivos con un punto en su inicio,  .htaccess en el caso que nos ocupa, son archivos ocultos en la plataforma Linux. Utiliza el administrador de archivos para verlo en caso no sea visible usando un cliente FTP. Si el archivo existe, renómbralo, no lo elimines. Si tu sitio ha estado funcionando sin problema, podría deberse a un cambio en la configuración del servidor, confirmarlo  con tu empresa de hospedaje.

Si el archivo no existe, súbelo de algún respaldo que tengas de ese sitio. La inexistencia de ese archivo puede generar el error 500 en páginas interiores.

Quinta Causa: Modo Mantenimiento

Para evitar que tus visitantes tengan acceso al sitio mientras se actualiza o modifica, utilizas el modo mantenimiento. El archivo maintenance.flag en el directorio raíz es el causante de mostrar el modo mantenimiento a tus visitantes. El modo mantenimiento también cambia  los permisos del archivo index.php de 755 a 666 para evitar que sea ejecutado por el navegador del visitante.

Cuando Mage_Downloader actualiza el script, puede detenerse antes de que coloque los permisos originales, y en ocasiones, puede también detenerse antes de que el archivo maintenance.flag sea removido. Esto podría ser causado por recursos limitados en el servidor, interrupciones en el navegador o problema de conexión de red.

Para que tu sitio funcione nuevamente, utiliza tu administrador de archivos o un cliente de FTP y realiza lo siguiente:

1. Ve al directorio raíz de tu instalación Magento
2. Elimina el archivo maintenance.flag
3. Cambia los permisos al index.php de 666 a 755
4. En el directorio de descarga, por lo general bajo el nombre de downloader, cambia los permisos del index.php de 666 a 755
5. Recarga la ventana del administrador o la página principal de tu sitio

Sexta Causa: Falta Curl

Si la extensión Curl no está presente en la instalación Magento, puedes experimentar el error 500 Internal Server. Puedes instalarlo utilizando el siguiente comando:

apt-get install curl libcurl3 libcurl3-dev php5-curl

Si tienes hospedaje web con nosotros, puedes contactarnos para confirmar si está presente o no. Por defecto está presente.

 

Optimización para que corra mejor Magento

Optimización para que corra mejor Magento

Magento es una aplicación de eCommerce muy popular que ofrece una gran cantidad de características y posibilidades de personalización desde el mismo inicio. Aquí tienes algunas recomendaciones para optimizar una instalación de Magento para una ejecución más rápida y consumiendo menos recursos.

Recuerda que Magento es una aplicación que consume de manera intensa muchos recursos del servidor y si, por la cantidad de visitas, tienes problemas de ejecución en una cuenta de hospedaje compartido la siguiente mejor opción será un servicio semidedicado o dedicado.

Cambios al .htaccess

Habilita la compresión de salida (Output compression)

En el archivo .htaccess de tu tienda Magengo encontrarás una línea que inicia con <IfModule mod_deflate.c> y finaliza con </IfModule>

Esta sección de código puede utilizarse para habilitar el módulo de Apache mod_deflate, que permite comprimir texto, css y javascript. Si lo deseas habilitar, descomenta (quita el #) de todas las líneas de esta porción de código. Se verá algo así:

<IfModule mod_deflate.c>

############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip

# Insert filter on all content
SetOutputFilter DEFLATE
# Insert filter on selected content types only
AddOutputFilterByType DEFLATE text/html text/plain text/xml
text/css text/javascript

# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don’t compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary

</IfModule>

Habilita Expiración de Encabezados

La primera vez que los visitantes llegan a tu sitio, éste realiza varias solicitudes HTTP. Al utilizar el «Expires Header» permites que los componentes de la solicitud sean cacheables (estén en el caché). Eso evitará solicitudes HTTP innecesarias en vistas de página subsecuentes.

En el archivo .htaccess busca la línea que inicia con <IfModulemod_expires.c> y finaliza con el primer </IfModule> que veas, se verá similar a lo siguiente:

<IfModule mod_expires.c>

############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires

ExpiresActive On
ExpiresDefault «access plus 1 year»

</IfModule>

Ajustes en la Administración de Magento

Combinar CSS y JS

Este pequeño ajuste reducirá el número de solicitudes HTTP en tu sitio eCommerce. Si utilizas la versión de Magento antes de la 1.4x, puedes utilizar la extensión Fooman_Speedster. Si es una versión posterior de Magento, realiza lo siguiente:

  1. Entra al área de administración y ve a System > Configuration > Developer
  2. En la sección de «JavaScript Settings», cambia a Sí la opción «Merge Javascript Files».
  3. En la sección «CSS Settings», cambia a Sí la opción «Merge CSS Files».
  4. Lo último por realizar es vaciar el caché de Magento

Habilita Flat Catalog

El modelo que Magento utiliza para almacenar la información de clientes y productos resulta en consultas SQL de mayor duración que el promedio y más lecturas. Al habilitar la opción Flat Catalog para Categorías y Productos se fusionará la información de producto en una sola tabla, por lo que mejorará el rendimiento.

  1. Entra al área de administración y ve a System > Configuration > Catalog
  2. En «Frontend», cambia a Sí «Use Flat Catalog Category»
  3. En «Frontend», cambia a Sí «Use Flat Catalog Product» – este es opcional
  4. Lo último por realizar es vaciar el caché de Magento.

Consejos para el mantenimiento de tu base de datos

Uno de los principales problemas con sitios Magento que son lentos es que la base de datos se ha hecho demasiado grande y difícil de utilizar para enviar y recuperar información. Aquí te damos algunos consejos para reducir el tamaño de tu base de datos Magento.

Nota: Asegúrate de tener respaldo de tu base de datos antes de ejecutar cualquier cambio de los sugeridos.

Logs de Base de datos

Hay varias tablas utilizadas por Magento para logs. Aunque es muy importante conocer qué ha sucedido y sucede con tu tienda, los logs pueden llegar a ser rápidamente muy muy grandes, por lo que un mantenimiento regular puede resultar de mucha ayuda.

Las tablas utilizadas para almacenar logs (almacenar movimientos) son:
log_customer
log_visitor
log_visitor_info
log_url
log_url_info
log_quote
report_viewed_product_index
report_compared_product_index
report_event
catalog_compare_item

Limpieza de logs en base de datos usando la administración de Magento

  1. En la  Administración ve a System > Configuration
  2. En el menú izquierdo, debajo de Afvanced, da click en System
  3. En la opción «Log Cleaning», cambia a Sí «Enable Log Cleaning» y  configura su conservación por 14 días
  4. Da click en «Save Config».

Utilidad log.php

Magento incluye una utilidad que puede configurarse con un Cron o ejecutarse manualmente para darle mantenimiento a los logs de la base de datos.

Manualmente

Entra a tu cuenta vía SSH (esto puede realizarse si tienes un servicio dedicado o VPS o si tienes acceso shell) y ve al directorio raíz de Magento, allí coloca:

php -f shell/log.php clean

Puedes utilizar el modificador -days para especificar cuántos días hacia atrás deben conservarse.

Cron

  1. Entra a tu panel de control, cPanel, por ejemplo.
  2. Da click en Cron Jobs

Cambia lo que requiera ser cambiado en el ejemplo siguiente:

php -f/home/usuariocpanel/public_html/rutahaciamagento/shell/log.php

Limpieza de base de datos vía phpMyAdmin

phpMyAdmin te proporciona mucha flexibilidad y eficiencia al trabajar con base de datos:

  1. Entra a tu cPanel y da click en phpMyAdmin
  2. Da click en la base asociada con Magento
  3. Selecciona las tablas siguientes:

log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online

  1. Debajo del listado de tablas, da click en la caja de selección «With Selected» y elige Empty (Empty significa vaciar).
  2. Tendrás una confirmación visual, dile que Sí.

Esta acción de mantenimiento es conveniente realizarla de manera regular. Si utilizas la opción cron job te asegurarás que se realiza sin ninguna intervención manual. Sólo ten la precaución de configurarlo apropiadamente.