Knowledge Base Guide

Desarrollo local PrestaShop: XAMPP, WAMP, Docker y Linux

Guía completa para configurar un entorno local de desarrollo en PrestaShop — XAMPP, WAMP, MAMP, Docker, Linux nativo y comparación Windows vs Linux.

¿Por qué desarrollar en local?

Todo desarrollador experimentado de PrestaShop tiene una historia sobre “probar algo rápidamente” en una tienda en producción y romper el proceso de pago o quedarse bloqueado fuera del panel de administración. El desarrollo local elimina toda esa categoría de desastres.

  • Seguridad: Pruebe cambios de tema, instalaciones de módulos y actualizaciones de PHP sin ningún riesgo para su tienda en producción.
  • Velocidad: Sin subidas por FTP, sin esperas en el panel de hosting. Modifique un archivo, actualice el navegador y vea el resultado al instante.
  • Trabajo sin conexión: Desarrolle en un tren, en una cafetería sin WiFi o durante una caída del hosting.
  • Pruebas multiversión: Ejecute PrestaShop 1.7, 8.x y 9.x simultáneamente. Pruebe un módulo en todas las versiones en una sola tarde.
  • Herramientas de depuración: Use Xdebug para depuración paso a paso, active la notificación completa de errores, perfile consultas lentas — imposible en un hosting compartido.
Si usted está modificando cualquier archivo PHP directamente en su servidor en producción, está asumiendo riesgos innecesarios. Un entorno local se configura en 30 minutos y le ahorra la emergencia de las 3 de la madrugada que, de lo contrario, llegará tarde o temprano.

Windows vs Linux vs macOS — Una comparación honesta

Somos desarrolladores de Linux y no vamos a pretender lo contrario. Pero respetamos todas las plataformas y le daremos una evaluación honesta.

Windows

XAMPP y WAMP fácilitan los primeros pasos. Para pruebas ocasionales, Windows funciona bien. Sin embargo, PrestaShop fue diseñado para servidores Linux, lo que introduce fricciones sutiles:

  • Permisos de archivos: PrestaShop usa permisos de estilo Unix (chmod 755/644). Windows tiene un modelo diferente — XAMPP otorga permisos completos a todo, ocultando errores que aparecen en su servidor Linux.
  • Sensibilidad a mayúsculas: MyModule.php y mymodule.php son el mismo archivo en Windows pero archivos diferentes en Linux. Los módulos pueden funcionar localmente y fallar al desplegarlos.
  • Finales de línea: Windows CRLF frente a Linux LF puede causar errores de “headers already sent” o romper scripts de shell.
  • Rendimiento: Windows Defender escanea activamente los archivos PHP durante la ejecución, añadiendo una sobrecarga medible.

Linux

La coincidencia más cercana con su entorno de producción. Mismo sistema de archivos, mismos permisos, mismas herramientas.

  • Docker nativo: Sin capa de virtualización. Inicio instantáneo, rendimiento nativo del sistema de archivos.
  • Gratuito y de código abierto: PHP, MySQL, Apache, Nginx, Composer, Node.js, Git, VS Code — todo gratuito.
  • Paridad con producción: Los errores que encuentra localmente existen en el servidor. Los errores que no detecta localmente (por lo general) no le sorprenderán en producción.

macOS

Un buen punto intermedio — basado en Unix, por lo que los permisos y las rutas funcionan como en Linux. Docker se ejecuta a través de una VM ligera (algo de sobrecarga de E/S). Homebrew proporciona acceso fácil a todas las herramientas: brew install php@8.2 mysql composer.

Nuestra recomendación

Para desarrollo de PrestaShop a tiempo completo, use Linux — específicamente Ubuntu (el más fácil) o Arch Linux (mayor control). Nosotros personalmente usamos Arch Linux con KDE Plasma — todo lo que utilizamos es de código abierto y legalmente gratuito.

Para pruebas ocasionales como propietario de tienda, XAMPP en Windows es perfectamente adecuado. No permita que nadie le diga que cambie de sistema operativo solo para probar un módulo.

El “mejor” entorno de desarrollo es el que usted realmente usa. Una configuración de XAMPP en Windows que utiliza todos los días supera a una configuración perfecta de Docker en Linux que nunca llegó a configurar.

Opción 1: XAMPP (Windows, macOS, Linux)

XAMPP agrupa Apache, MariaDB, PHP y phpMyAdmin en un solo instalador. Para quien desee PrestaShop en local con el mínimo esfuerzo, este es el camino más rápido.

Instalación

1. Descargue desde apachefriends.org. Elija la versión de PHP que corresponda a su PrestaShop: 7.2-7.4 para PS 1.7, 8.0-8.2 para PS 8.x, 8.1-8.3 para PS 9.x.

2. Instale (Windows: C:\xampp, macOS: /Applications/XAMPP). Inicie Apache y MySQL desde el panel de control.

3. Cree una base de datos en http://localhost/phpmyadmin — haga clic en “New”, nómbrela prestashop, seleccione utf8mb4_general_ci.

4. Descargue PrestaShop desde GitHub releases. Extráigalo en C:\xampp\htdocs\prestashop\.

5. Visite http://localhost/prestashop y siga el instalador (servidor de base de datos: localhost, usuario: root, contraseña: vacía). Elimine el directorio install/ cuando termine.

Ajustes necesarios en php.ini

Encuentre php.ini a través del panel de control de XAMPP > Apache > Config:

memory_limit = 512M              ; el valor predeterminado de 128M no es suficiente
max_execution_time = 300         ; el valor predeterminado de 30s es muy corto para importaciones
upload_max_filesize = 64M        ; el valor predeterminado de 2M es muy pequeño para ZIPs de módulos
post_max_size = 64M
max_input_vars = 20000           ; el valor predeterminado de 1000 — crítico para formularios del admin de PS

Descomente las extensiones requeridas eliminando el ;: intl, gd, zip, curl, mbstring. Reinicie Apache.

Problemas comunes de XAMPP

Conflicto del puerto 80: Skype o IIS está usando el puerto 80. Cambie Listen 80 a Listen 8080 en httpd.conf y luego acceda en http://localhost:8080.

Errores de “max_input_vars”: El problema número 1 de XAMPP con PrestaShop. Los ajustes no se guardan, las combinaciones se pierden. Establezca el valor en 20000 en php.ini.

Página en blanco: Revise C:\xampp\apache\logs\error.log — generalmente es una extensión faltante o memoria insuficiente.

Opción 2: WAMP (solo Windows)

La característica estrella de WAMP es el cambio integrado de versión de PHP — haga clic izquierdo en el icono de la bandeja del sistema > PHP > Version, y cambie instantáneamente.

Configuración

1. Descargue desde wampserver.aviatechno.net (64-bit). Instale primero los Visual C++ Redistributables — WAMP los requiere.

2. Instale en C:\wamp64. El icono de la bandeja del sistema se pone verde cuando todos los servicios están en ejecución.

3. Añada versiones de PHP desde la página de complementos de WAMP. Se integran automáticamente.

Virtual Hosts

WAMP incluye un administrador de virtual hosts: icono de la bandeja > Your VirtualHosts > VirtualHost Management. Configure ps17.local y ps8.local apuntando a diferentes directorios. WAMP actualiza su archivo hosts y la configuración de Apache automáticamente.

El conmutador de versión de PHP de WAMP cambia la versión a nivel de todo el servidor. No puede ejecutar PHP 7.4 y 8.2 simultáneamente para diferentes virtual hosts — para eso necesita Docker.

Opción 3: MAMP (macOS)

MAMP es el equivalente de XAMPP para Mac. La versión gratuita le proporciona un document root con Apache, PHP y MySQL. MAMP Pro ($59) añade múltiples hosts, SSL, cambio de versión de PHP y Nginx.

Configuración rápida: Descargue desde mamp.info, inicie los servicios, cree una base de datos vía phpMyAdmin, coloque PrestaShop en /Applications/MAMP/htdocs/prestashop/, acceda en http://localhost:8888/prestashop.

Si el rendimiento de Docker en su Mac es inaceptable (común con volúmenes montados), use Homebrew en su lugar: brew install php@8.2 mysql composer le ofrece velocidad nativa.

Opción 4: Configuración nativa en Linux

Instale y configure cada componente directamente. Máximo control, mejor rendimiento, lo más cercano a producción.

Ubuntu / Debian

sudo apt update
sudo apt install apache2
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-gd php8.2-intl \
  php8.2-curl php8.2-zip php8.2-xml php8.2-mbstring php8.2-bcmath
sudo apt install mysql-server
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Arch Linux: sudo pacman -S apache php php-fpm php-gd php-intl php-sodium mariadb composer, luego inicialice MariaDB y habilite los servicios con systemctl.

Apache Virtual Host

Cree /etc/apache2/sites-available/ps8.local.conf con un VirtualHost apuntando ServerName ps8.local y DocumentRoot a su directorio de PrestaShop. Establezca AllowOverride All y haga proxy de PHP a FPM. Active con sudo a2ensite ps8.local.conf && sudo a2enmod rewrite proxy_fcgi && sudo systemctl reload apache2. Añada 127.0.0.1 ps8.local a /etc/hosts.

Permisos de archivos

Establezca la propiedad a www-data, los directorios a 755, los archivos a 644, y los directorios con permisos de escritura (var/, cache/, img/, upload/, config/) a 775. Los permisos de archivos son el obstáculo número 1 en Linux — si PrestaShop muestra una página en blanco, revise el log de errores de Apache buscando “Permission denied”.

Opción 5: Docker — Recomendado para desarrollo serio

Cada versión de PrestaShop se ejecuta en su propio contenedor con su propio PHP y MySQL. Nada entra en conflicto, nada se filtra. Consulte nuestra guía completa de Docker para instrucciones detalladas.

docker-compose.yml rápido

services:
  prestashop:
    image: prestashop/prestashop:8.2
    ports: ["8085:80"]
    environment:
      DB_SERVER: db
      DB_USER: prestashop
      DB_PASSWD: prestashop
      DB_NAME: prestashop
      PS_DOMAIN: localhost:8085
      ADMIN_MAIL: admin@yourshop.com
      ADMIN_PASSWD: your_secure_password
    volumes: [ps-files:/var/www/html]
    depends_on: [db]
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_pass
      MYSQL_DATABASE: prestashop
      MYSQL_USER: prestashop
      MYSQL_PASSWORD: prestashop
    volumes: [db-data:/var/lib/mysql]
volumes:
  ps-files:
  db-data:

Iniciar: docker compose up -d. Acceda en http://localhost:8085.

Nosotros ejecutamos más de 25 contenedores de PrestaShop en un solo servidor — desde PS 1.6 hasta 9.1 — para desarrollo y pruebas de módulos. Docker es la única forma práctica de gestiónar eso. Incluso con dos o tres versiones, le ahorra conflictos de dependencias.

Post-instalación: Configuración para todos los métodos

Extensiones de PHP requeridas

PrestaShop se negará a instalarse o funcionará mal sin estas extensiones:

  • intl — formato de moneda, manejo de locales (la más comúnmente ausente)
  • gd — procesamiento de imágenes, miniaturas, marcas de agua
  • curl — pasarelas de pago, API de webservice
  • mbstring — manejo de cadenas UTF-8
  • zip — instalación de módulos desde ZIPs
  • xml — importación/exportación, webservice
  • pdo_mysql — conectividad con la base de datos
  • opcache — caché de bytecode (técnicamente opcional, prácticamente obligatorio)

Verifique: php -m | grep intl o cree una página con phpinfo() (elíminela después).

Activar URLs amigables

Apache: sudo a2enmod rewrite y establezca AllowOverride All en su vhost. Nginx: Use try_files $uri $uri/ /index.php?$args;. Luego active en Back Office > Shop Parameters > Traffic & SEO.

Pruebas de correo electrónico con Mailpit

Capture todo el correo saliente localmente en lugar de enviar correos reales:

docker run -d --name mailpit -p 8025:8025 -p 1025:1025 axllent/mailpit

Configure el SMTP de PrestaShop: servidor localhost, puerto 1025, sin cifrado, sin autenticación. Vea los correos en http://localhost:8025.

Configuración del IDE

VS Code (gratuito): Instale las extensiones PHP Intelephense + PHP Debug. Configure Xdebug con port: 9003 y pathMappings apuntando la ruta de su contenedor a su carpeta de workspace. PHPStorm (de pago): Herramientas integradas de PHP, Xdebug, base de datos e integración con Docker. Merece la pena si PHP es su profesión.

Importar una tienda en producción a local

Probar con sus productos, tema y módulos reales detecta errores reales que una instalación limpia no puede encontrar.

Exportación e importación de la base de datos

# Exportar desde producción (vía SSH — phpMyAdmin agota el tiempo en bases de datos grandes)
mysqldump -u db_user -p database_name > prestashop_backup.sql

# Crear base de datos local
mysql -u root -p -e "CREATE DATABASE prestashop_local CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

# Importar
mysql -u root -p prestashop_local < prestashop_backup.sql

Copiar archivos y actualizar la configuración

Descargue los directorios críticos (img/, modules/, themes/, config/, override/, upload/) vía rsync: rsync -avz user@server:/path/to/prestashop/ /local/prestashop/

-- Cambiar dominio a local
UPDATE ps_shop_url SET domain = 'localhost:8080', domain_ssl = 'localhost:8080' WHERE id_shop_url = 1;

-- Desactivar SSL
UPDATE ps_configuration SET value = '0' WHERE name = 'PS_SSL_ENABLED';
UPDATE ps_configuration SET value = '0' WHERE name = 'PS_SSL_ENABLED_EVERYWHERE';

Edite app/config/parameters.php (PS 1.7/8.x) o config/settings.inc.php (PS 1.6) con las credenciales locales de la base de datos. Limpie la caché: rm -rf var/cache/*.

Después de importar, cree una nueva cuenta de administrador para uso local en lugar de usar las credenciales de producción. Esto previene que cambios accidentales afecten a producción si su flujo de trabajo se descuida.

Problemas comunes del desarrollo local

Pantalla en blanco tras la instalación

Siempre revise primero el log de errores — la respuesta casi siempre está ahí:

# Apache: tail -50 /var/log/apache2/error.log
# XAMPP: C:\xampp\apache\logs\error.log
# PrestaShop: tail -50 var/logs/dev.log

Extensión faltante: El log muestra Call to undefined function — instale la extensión indicada. Memoria: El log muestra Allowed memory size exhausted — aumente memory_limit. Versión incorrecta de PHP: PS 8.x en PHP 7.4 produce errores de tipo — verifique con php -v.

No se puede acceder al panel de administración

mod_rewrite no está activado o .htaccess no se está leyendo. Active rewrite: sudo a2enmod rewrite. Establezca AllowOverride All en su vhost. Para XAMPP: cambie AllowOverride None a AllowOverride All en httpd.conf.

Extremadamente lento en Windows

Antivirus: Añada sus directorios de XAMPP y PrestaShop a las exclusiones de Windows Defender (Settings > Virus & threat protection > Exclusions).

Docker en WSL2: Almacene los archivos dentro del sistema de archivos nativo de WSL2 (/home/you/prestashop/), no en una unidad de Windows montada (/mnt/c/...) — la diferencia de rendimiento es drástica.

Las imágenes no cargan

Falta GD: Instale php-gd. Permisos: chown -R www-data:www-data img/. Tienda importada: Regenere las miniaturas desde Back Office > Design > Image Settings.

La instalación de módulos falla

“Cannot upload”: Aumente upload_max_filesize y post_max_size a 64M. “Cannot unzip”: Instale php-zip. “Permission denied”: chmod 775 modules/. “Class not found”: Elimine var/cache/*/class_index.php.

Conexión a la base de datos rechazada

MySQL no está en ejecución — verifique con sudo systemctl status mysql e inícielo si es necesario. Para “Access denied”, compruebe que las credenciales coincidan entre su archivo de configuración y los permisos de usuario de MySQL.

Consejos para el flujo de trabajo de desarrollo

Active el modo de depuración: En config/defines.inc.php, establezca define('_PS_MODE_DEV_', true); para obtener trazas de pila y detalles SQL. Nunca lo active en producción.

Desactive la caché: Back Office > Advanced Parameters > Performance — establezca la caché de Smarty en “No” y desactive CCC. La caché oculta sus cambios.

Use Git: git init && git add . && git commit -m "Initial structure" en el directorio de su módulo. Cada cambio queda registrado. git diff muestra lo que cambió, git checkout -- file.php revierte un archivo.

Referencia rápida: Requisitos por versión

  • PS 1.6.1.x: PHP 5.6-7.1, MySQL 5.0-5.7
  • PS 1.7.0-1.7.6: PHP 7.1-7.3, MySQL 5.5-5.7
  • PS 1.7.7-1.7.8: PHP 7.2-7.4, MySQL 5.6-8.0
  • PS 8.0-8.1: PHP 8.0-8.1, MySQL 5.7-8.0
  • PS 8.2: PHP 8.1-8.2, MySQL 5.7-8.0 / MariaDB 10.x
  • PS 9.x: PHP 8.1-8.3, MySQL 8.0 / MariaDB 10.11+
Siempre consulte los requisitos del sistema oficiales para su versión exacta — cambian con las versiones menores.

¿Qué sigue?

La inversión en un entorno local adecuado da dividendos cada día. Treinta minutos de configuración ahorran horas de depuración y previenen incidentes en producción.

More guides available

Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.

Cargando...
Volver arriba