Aumentar límite de memoria PHP en PrestaShop para DirectAdmin
Cuando tu tienda PrestaShop empieza a crecer, puede que te encuentres con el molesto mensaje de error de memoria PHP o que algunas funcionalidades dejen de funcionar. Esto es más común de lo que parece, especialmente al instalar módulos, subir productos con muchas imágenes o al usar temas complejos.
No te preocupes, es una situación normal y tiene una solución muy sencilla: aumentar el límite de memoria PHP. En este artículo, te guiaré paso a paso para que puedas hacerlo desde el panel de control DirectAdmin, que es uno de los más utilizados en hosting compartido y VPS.
Vamos a desglosar todo el proceso, desde entender qué está pasando hasta aplicar los cambios sin riesgos. Así que, si estás viendo el error "Allowed memory size of X bytes exhausted" o simplemente quieres prevenir futuros problemas, este artículo es para ti.
¿Por qué aparece el error de memoria en PrestaShop?
PrestaShop es un CMS muy potente, pero también es exigente con los recursos del servidor. El límite de memoria PHP es la cantidad máxima de memoria RAM que un script de PHP (como PrestaShop) puede usar. Cuando tu tienda intenta hacer más de lo que ese límite permite, el sistema se detiene y muestra un error.
Las causas más comunes de este error son:
- Módulos pesados: Algunos módulos de terceros (como los de envío, pago o SEO) consumen mucha memoria.
- Catálogo grande: Tener miles de productos, combinaciones o imágenes.
- Tema complejo: Un tema con muchas animaciones, sliders y scripts.
- Procesos largos: Como generar un sitemap, exportar productos o ejecutar un cron job.
- Versión de PHP: Las versiones más nuevas de PHP suelen ser más eficientes, pero a veces requieren más memoria por defecto.
El límite recomendado para PrestaShop es de 256 MB o 512 MB. Si tu servidor tiene suficiente RAM, puedes incluso subirlo a 1024 MB (1 GB) para estar tranquilo.
¿Qué necesito antes de empezar?
Antes de modificar nada, es importante que tengas a mano algunos datos y que tomes precauciones básicas. Esto te evitará dolores de cabeza.
Requisitos previos
- Acceso a DirectAdmin: Necesitas las credenciales de tu panel de control. Normalmente las recibes al contratar el hosting.
- Acceso FTP o al administrador de archivos: Para hacer copias de seguridad y, en algunos casos, modificar archivos.
- Conocimiento del límite actual: Puedes verlo desde el back office de PrestaShop (Parámetros de la tienda > Información) o creando un archivo
info.phptemporal. - Copia de seguridad: Siempre, siempre, haz una copia de seguridad de los archivos que vayas a modificar. Especialmente del archivo
.htaccessophp.ini.
[WARNING] No modifiques archivos sin hacer una copia de seguridad. Un error de sintaxis puede dejar tu tienda inaccesible. Siempre ten un plan B (como una copia de seguridad reciente).
¿Cómo sé mi límite de memoria actual?
Para ver tu límite actual, puedes ir al back office de PrestaShop:
- Ve a Parámetros de la tienda > Información.
- Busca la línea que dice "memory_limit". Ahí verás el valor actual (por ejemplo, 128M, 256M, etc.).
Si no tienes acceso al back office, puedes crear un archivo temporal:
- Conéctate por FTP a tu servidor.
- Crea un archivo llamado
info.phpen la raíz de tu tienda (donde está la carpetaadmin). - Dentro, pega este código:
<?php phpinfo(); ?> - Accede a
tudominio.com/info.phpy busca la líneamemory_limit. - No olvides eliminar este archivo después, ya que expone información sensible de tu servidor.
Método 1: Aumentar la memoria PHP desde DirectAdmin (El más fácil)
Este es el método más directo y seguro para usuarios de DirectAdmin. Lo haremos desde el panel de control, sin tocar archivos manualmente.
Paso 1: Acceder a la configuración de PHP
- Inicia sesión en tu DirectAdmin.
- Busca y haz clic en el icono "Selector de PHP" o "PHP Selector". Puede estar en la sección de "Cuenta" o "Características avanzadas".
- Se abrirá una ventana con las opciones de PHP para tu dominio. Verás una lista de versiones de PHP (7.4, 8.0, 8.1, 8.2, etc.) y, a la derecha, un botón o enlace que dice "Configuración personalizada" o "Custom" (a veces es un engranaje).
[INFO] Si no ves la opción "Selector de PHP", es posible que tu plan de hosting no lo incluya. En ese caso, tendrás que usar el Método 2 (archivos manuales). Pregunta a tu proveedor si pueden habilitarlo.
Paso 2: Modificar el valor de memory_limit
- Una vez dentro de la configuración personalizada, verás una lista de directivas de PHP. Busca la línea que dice
memory_limit. - En la columna de la derecha, donde está el valor actual (por ejemplo,
128M), haz clic para editarlo. - Cambia el valor a
256Mo512M. Si tu servidor tiene mucha RAM (por ejemplo, 2 GB o más), puedes poner1024M. - Haz clic en "Guardar" o "Actualizar".
Paso 3: Verificar el cambio
- Vuelve al back office de PrestaShop y ve a Parámetros de la tienda > Información.
- Busca de nuevo
memory_limit. Debería mostrar el nuevo valor que acabas de configurar. - Si todo está bien, ya has solucionado el problema. Si el error persiste, puede que necesites reiniciar el servicio PHP o el servidor web. En DirectAdmin, a veces los cambios se aplican al instante, pero si no, contacta a tu soporte técnico.
[TIP] Si tienes varios dominios en tu cuenta de DirectAdmin, asegúrate de seleccionar el dominio correcto en el Selector de PHP. Cada dominio puede tener su propia configuración.
Método 2: Modificar archivos manualmente (Alternativa)
Si no tienes el Selector de PHP o prefieres hacerlo manualmente, puedes modificar los archivos de configuración. Hay dos archivos principales que puedes usar: php.ini (local) o .htaccess.
Opción A: Usando un archivo php.ini local
- Conéctate a tu servidor por FTP o usando el Administrador de Archivos de DirectAdmin.
- Ve a la raíz de tu tienda PrestaShop (donde están las carpetas
admin,modules,img, etc.). - Busca un archivo llamado
php.ini. Si no existe, créalo. - Abre el archivo y añade esta línea:
(Puedes cambiarmemory_limit = 256M256Mpor512Mo1024Msegún necesites). - Guarda el archivo y verifica el cambio desde el back office.
[WARNING] No todos los servidores permiten usar un
php.inilocal. Si no funciona, prueba con el.htaccess.
Opción B: Usando el archivo .htaccess
Este método es más común y suele funcionar en la mayoría de los servidores Apache.
- Conéctate por FTP y busca el archivo
.htaccessen la raíz de tu tienda (a veces está oculto, así que activa la opción de ver archivos ocultos en tu cliente FTP). - Haz una copia de seguridad de este archivo.
- Abre el
.htaccessy, al principio del archivo (después de la líneaRewriteEngine On), añade esta línea:php_value memory_limit 256M - Guarda el archivo. PrestaShop a veces sobrescribe el
.htaccesscuando activas la URL amigable, así que es posible que tengas que repetir este paso después de ciertas configuraciones.
[TIP] Si tu servidor usa PHP como módulo de Apache (mod_php), esta línea funcionará. Si usa PHP-FPM (lo más común hoy en día), es posible que no funcione. En ese caso, prueba con el método de DirectAdmin o con un
user.ini.
Opción C: Usando un archivo user.ini (para PHP-FPM)
Si tu servidor usa PHP-FPM (pregunta a tu hosting), puedes usar un archivo user.ini.
- Crea un archivo llamado
.user.inien la raíz de tu tienda. - Añade la línea:
memory_limit = 256M - Guarda el archivo. Este método es muy fiable para servidores con PHP-FPM.
Solución de problemas comunes
A veces, incluso después de aumentar el límite, el error persiste. Aquí tienes algunas soluciones para los problemas más habituales.
"El cambio no se refleja en el back office"
- Caché de PHP: Algunos servidores tienen una caché de opcode (como OPcache). Puede que necesites reiniciar el servicio PHP o esperar unos minutos.
- Directiva incorrecta: Asegúrate de que estás modificando el archivo correcto. Si usas
.htaccess, verifica que el servidor permitaphp_value. Si usasphp.ini, asegúrate de que esté en la carpeta correcta. - Sobrescritura: PrestaShop puede sobrescribir el
.htaccessal guardar la configuración. Después de hacer cambios en el back office, vuelve a verificar tu.htaccess.
"El error sigue apareciendo en una página específica"
- Módulo conflictivo: Desactiva módulos uno por uno para identificar cuál está causando el problema. A veces un módulo mal programado consume toda la memoria.
- Imágenes demasiado grandes: Las imágenes de productos en alta resolución pueden consumir mucha memoria al procesarse. Redimensiona las imágenes antes de subirlas (máximo 1920px de ancho).
- Tema pesado: Prueba a cambiar temporalmente al tema por defecto (Classic) para ver si el error desaparece. Si es así, el problema está en tu tema.
"No tengo acceso al Selector de PHP de DirectAdmin"
- Contacta a tu proveedor: Algunos planes de hosting compartido no incluyen esta función. Pregunta si pueden aumentarlo ellos directamente o si pueden habilitar el selector.
- Actualiza tu plan: Si tu tienda está creciendo, considera migrar a un VPS o un plan de hosting más potente que te dé control total sobre PHP.
Preguntas frecuentes (FAQ)
¿Qué valor de memory_limit es el recomendado para PrestaShop?
Para la mayoría de las tiendas, 256 MB es suficiente. Si tienes un catálogo grande (más de 10,000 productos) o módulos muy pesados, te recomiendo 512 MB. Solo en casos extremos necesitarás 1024 MB.
¿Aumentar la memoria PHP puede ralentizar mi servidor?
No directamente. El límite de memoria es un tope, no una asignación fija. Tu tienda solo usará la memoria que necesite. Sin embargo, si pones un límite muy alto (por ejemplo, 2048 MB) y tu servidor tiene poca RAM, podrías saturarlo si varios procesos usan mucha memoria a la vez. Lo ideal es monitorear el uso de RAM de tu servidor.
¿Qué hago si después de aumentar la memoria sigo teniendo errores?
- Verifica que el cambio se aplicó correctamente (revisa el back office o el archivo info.php).
- Aumenta el límite gradualmente (prueba 512 MB, luego 1024 MB).
- Busca el origen del problema: Desactiva módulos, cambia de tema, optimiza imágenes.
- Contacta a tu soporte técnico si el problema persiste. Puede ser un problema del servidor (por ejemplo, límite de memoria por proceso en el VPS).
¿Puedo aumentar la memoria sin acceso a DirectAdmin?
Sí, usando los métodos de archivos manuales (.htaccess, php.ini o .user.ini). Si no funcionan, pide a tu proveedor de hosting que lo haga por ti.
¿Es peligroso modificar el archivo .htaccess?
Solo si cometes un error de sintaxis. Por eso siempre debes hacer una copia de seguridad antes. Si algo sale mal, puedes subir la copia de seguridad por FTP y todo volverá a la normalidad.
Conclusión
Aumentar el límite de memoria PHP en PrestaShop desde DirectAdmin es un proceso sencillo que puede resolver la mayoría de los errores de memoria y mejorar el rendimiento de tu tienda. Recuerda que la clave está en identificar el valor adecuado para tu tienda (256 MB o 512 MB suele ser lo ideal) y aplicar el cambio de forma segura, siempre con una copia de seguridad.
Si has seguido estos pasos y el problema persiste, no dudes en contactar a tu proveedor de hosting. A veces, el límite está definido a nivel de servidor y ellos pueden ajustarlo por ti.
Espero que este artículo te haya sido de gran ayuda. ¡Ahora ya puedes disfrutar de una tienda PrestaShop más estable y rápida! Si tienes alguna duda, déjala en los comentarios (si tu sitio lo permite) o consulta con tu equipo de soporte técnico. ¡Buena suerte con tu tienda!
