Anleitungen Anleitung

PrestaShop auf dem eigenen Rechner zum Laufen bringen

Vollständige Anleitung zur lokalen PrestaShop-Entwicklungsumgebung: XAMPP, WAMP, MAMP, Docker, natives Linux sowie Windows-vs-Linux-Vergleich für Entwickler.

Warum wir PrestaShop-Dateien niemals auf einem Live-Server bearbeiten

Jeder Entwickler in unserem Team hat irgendwann in seiner Laufbahn etwas auf einem Live-Shop „mal eben schnell repariert" und dabei den Checkout lahmgelegt. Wir erleben jeden Monat, wie Kunden genau dasselbe tun. Eine lokale Umgebung ist das eine Stück Infrastruktur, das Sie davor bewahrt, derjenige zu sein, der freitags um 23 Uhr die Produktivumgebung abgeschossen hat.

Seit 2013 haben wir aus diesem Arbeitsablauf heraus 140+ Module ausgeliefert, und die Regel, an die wir uns selbst halten, ist einfach: Nichts erreicht den Shop eines Kunden, das nicht bereits durch eine lokale Installation der exakten PrestaShop-Version gelaufen ist, die der Kunde betreibt. So richten wir das ein, das würden wir tatsächlich empfehlen, und hier haben wir gesehen, wie sich Anwender die Finger verbrennen.

  • Sicherheit. Probieren Sie eine Theme-Änderung, einen Modultausch oder einen Wechsel der PHP-Version aus, ohne Bestellungen aufs Spiel zu setzen.
  • Geschwindigkeit. Datei speichern, Browser aktualisieren. Kein SFTP, kein cPanel-Dateimanager, kein „lassen Sie mich kurz den Cache über das Panel leeren".
  • Offline. Wir haben in Zügen und während Hotel-WLAN-Ausfällen debuggt. Lokale Installationen stört das nicht.
  • Tests über mehrere Versionen. Aktuell betreiben wir PS 1.6, 1.7, 8.x und 9.x nebeneinander. Ein Modul funktioniert entweder über alle Versionen hinweg, auf denen ein Kunde sein könnte, oder es ist nicht fertig.
  • Echte Debugging-Werkzeuge. Xdebug-Einzelschrittausführung, vollständiges Error-Reporting, Slow-Query-Logs. Shared Hosting bietet Ihnen davon nichts.
Wenn Sie PHP direkt auf dem Live-Server bearbeiten, werden Sie irgendwann den Shop lahmlegen. Wir haben genug solcher Vorfälle bereinigt, um es deutlich zu sagen: Dreißig Minuten für die lokale Einrichtung sind günstiger als ein einziger Notfall-Rollback.

Windows vs. Linux vs. macOS: die klare Antwort

Wir entwickeln auf Linux. Unser gesamter Stack ist Docker auf TrueNAS, und daran wird sich nichts ändern. Aber viele Händler, mit denen wir arbeiten, sind auf Windows, und wir wollen nicht so tun, als würde XAMPP nicht das leisten, was sie brauchen.

Windows

XAMPP und WAMP bringen Sie schnell zum Laufen. Für einen Shop-Betreiber, der eine Theme-Änderung in der Vorschau ansehen oder eine Modulinstallation testen möchte, ist das in Ordnung. Die Reibung zeigt sich in dem Moment, in dem Sie versuchen, Code von Windows auf einen Linux-Server auszuliefern, und genau Linux läuft auf jedem PrestaShop-Host der Welt:

  • Groß-/Kleinschreibung. MyModule.php und mymodule.php sind unter Windows dieselbe Datei und unter Linux zwei verschiedene Dateien. Wir haben unzählige Male erlebt, wie das beim Deployment Module zerlegt. Lokal läuft alles perfekt, und in der Sekunde, in der es auf dem Server landet, gibt es 500er-Fehler.
  • Dateiberechtigungen. PrestaShop erwartet Unix-Berechtigungen im Stil 755/644. XAMPP erzwingt Berechtigungen kaum, sodass Fehler, die unter Linux auftauchen (beschreibbares Verzeichnis nicht beschreibbar, Cache-Dateien mit falschem Eigentümer), lokal unsichtbar bleiben.
  • Zeilenenden. CRLF in PHP-Dateien oder Shell-Skripten beschert Ihnen „headers already sent" und kaputte Cronjobs. Konfigurieren Sie Ihren Editor auf LF.
  • Defender-Overhead. Windows Defender scannt jede PHP-Datei, die PrestaShop lädt. Auf einer Back-Office-Seite, die 800 Dateien anfasst, werden Sie das spüren.

Linux

Dasselbe Dateisystem, dieselben Berechtigungen, derselbe PHP-Build wie auf Ihrem Server. Docker läuft nativ, ohne eine VM im Weg, sodass die Datei-Ein-/Ausgabe echt ist und der Containerstart sofort erfolgt.

  • Kein Virtualisierungs-Overhead.
  • PHP, MySQL, Apache, Nginx, Composer, Node, Git, VS Code, alles kostenlos, alles paketiert.
  • Wenn es lokal funktioniert, funktioniert es meist auch in der Produktion. Wenn es in der Produktion bricht, lässt es sich fast immer lokal reproduzieren.

macOS

Unix als Unterbau, sodass sich Berechtigungen und Pfade korrekt verhalten. Docker läuft in einer kleinen VM, was bedeutet, dass die Ein-/Ausgabe bei eingehängten Volumes langsamer ist als unter Linux, spürbar bei PrestaShop-Installationen, die pro Anfrage Hunderte von Dateien laden. Homebrew erledigt den Rest sauber: brew install php@8.2 mysql composer.

Was wir tatsächlich wählen würden

Wenn PrestaShop Ihr Beruf ist, setzen Sie auf Linux. Wir nutzen Arch mit KDE Plasma auf den Entwicklermaschinen, Debian auf unserem Server. Wenn Sie nicht das Betriebssystem wechseln möchten, ist XAMPP unter Windows ehrlich genug für Tests durch Shop-Betreiber. Denken Sie nur daran, dass es eine Vorschau ist, keine originalgetreue Kopie Ihres Produktivservers.

Die beste Entwicklungsumgebung ist diejenige, die Sie tatsächlich täglich nutzen. Eine unordentliche XAMPP-Installation, zu der Sie jeden Tag greifen, schlägt ein perfektes Linux-Setup, das noch in Ihrem Dokumente-Ordner auf seine Konfiguration wartet.

Option 1: XAMPP (Windows, macOS, Linux)

XAMPP bündelt Apache, MariaDB, PHP und phpMyAdmin in einem einzigen Installer. Es ist der schnellste Weg, PrestaShop auf einem Desktop-Rechner zum Laufen zu bringen, und Kunden, die nur eine Vorschau benötigen, empfehlen wir genau das.

Installation

1. Holen Sie es sich von apachefriends.org. Passen Sie die PHP-Version an Ihr PrestaShop an: 7.2-7.4 für PS 1.7, 8.0-8.2 für PS 8.x, 8.1-8.3 für PS 9.x.

2. Installieren Sie es (Windows verwendet standardmäßig C:\xampp, macOS /Applications/XAMPP). Starten Sie Apache und MySQL über das Control Panel.

3. Öffnen Sie http://localhost/phpmyadmin und erstellen Sie eine Datenbank namens prestashop mit der Kollation utf8mb4_general_ci.

4. Laden Sie PrestaShop von den GitHub-Releases herunter und entpacken Sie es nach C:\xampp\htdocs\prestashop\.

5. Rufen Sie http://localhost/prestashop auf, durchlaufen Sie den Installer (Host: localhost, Benutzer: root, Passwort: leer) und löschen Sie anschließend das Verzeichnis install/.

Die php.ini-Änderungen, die Sie brauchen werden

Öffnen Sie die php.ini über das XAMPP-Control-Panel (Apache > Config). Mit den Standardwerten kommen Sie durch keine PrestaShop-Installation:

memory_limit = 512M              ; Standard 128M reicht nicht aus
max_execution_time = 300         ; Standard 30s ist zu kurz für Importe
upload_max_filesize = 64M        ; Standard 2M ist zu klein für Modul-ZIPs
post_max_size = 64M
max_input_vars = 20000           ; Standard 1000: entscheidend für PS-Admin-Formulare

Kommentieren Sie intl, gd, zip, curl und mbstring ein, indem Sie das führende ; entfernen. Starten Sie Apache neu. Eine dieser Erweiterungen auszulassen ist der häufigste Grund, warum eine frische XAMPP-Installation sich weigert, PrestaShop auszuführen, insbesondere intl erwischt fast jeden.

Wo XAMPP Sie ärgert

Port 80 ist belegt. Skype, IIS oder Windows selbst hat ihn sich geschnappt. Ändern Sie Listen 80 in der httpd.conf auf Listen 8080 und verwenden Sie http://localhost:8080.

Einstellungen lassen sich nicht speichern, Kombinationen verschwinden. Das berühmte max_input_vars-Problem. Standard ist 1000; PS-Admin-Formulare können bei einem Produkt mit vielen Kombinationen über 5000 Variablen senden. Setzen Sie in der php.ini den Wert 20000.

Weiße Seite. Prüfen Sie immer zuerst C:\xampp\apache\logs\error.log. Fast immer ist es eine fehlende PHP-Erweiterung oder erschöpfter Speicher.

Option 2: WAMP (nur Windows)

Das Einzige, was WAMP besser macht als XAMPP, ist das serverweite Umschalten der PHP-Version über das Tray-Symbol. Nützlich, wenn Sie diese Woche an einer PS-Version und nächste Woche an einer anderen herumbasteln.

Einrichtung

1. Laden Sie den 64-Bit-Installer von wampserver.aviatechno.net herunter. Installieren Sie die Visual C++ Redistributables, nach denen er fragt, sonst startet er nicht.

2. Installieren Sie nach C:\wamp64. Das Tray-Symbol wird grün, sobald Apache und MySQL beide laufen.

3. Fügen Sie zusätzliche PHP-Versionen über die WAMP-Addons-Seite hinzu; sie reihen sich automatisch in die Versionsumschaltung ein.

Virtuelle Hosts

WAMP enthält einen Manager für virtuelle Hosts (Tray-Symbol > Ihre virtuellen Hosts > Verwaltung virtueller Hosts). Richten Sie ps17.local und ps8.local auf unterschiedliche Verzeichnisse aus, WAMP übernimmt die hosts-Datei und die Apache-Konfiguration für Sie.

WAMP schaltet PHP serverweit um, nicht pro virtuellem Host. Sie können nicht gleichzeitig PHP 7.4 für einen Shop und PHP 8.2 für einen anderen betreiben. In dem Moment, in dem Sie das benötigen, brauchen Sie Docker.

Option 3: MAMP (macOS)

Das Mac-Pendant zu XAMPP. Kostenlose Version: ein Document Root, Apache, PHP, MySQL. MAMP Pro für 59 $ schaltet mehrere Hosts, SSL, PHP-Versionen pro Host und Nginx frei.

Installieren Sie von mamp.info, legen Sie PrestaShop in /Applications/MAMP/htdocs/prestashop/ ab und öffnen Sie http://localhost:8888/prestashop. Falls sich Docker-Volume-Mounts auf Ihrem Mac quälend langsam anfühlen (eine häufige Beschwerde), greifen Sie stattdessen zu Homebrew, natives PHP und MySQL ohne eine VM dazwischen.

Option 4: Native Linux-Einrichtung

Installieren Sie Apache, PHP und MySQL direkt auf dem Betriebssystem. Maximale Kontrolle, am schnellsten, am nächsten an dem, was Ihr Hosting-Anbieter auch immer betreibt.

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, dann MariaDB initialisieren und die Dienste mit systemctl hochfahren.

Apache-VirtualHost

Erstellen Sie /etc/apache2/sites-available/ps8.local.conf mit einem VirtualHost, der ServerName ps8.local auf Ihr PrestaShop-Verzeichnis ausrichtet. Setzen Sie AllowOverride All und übergeben Sie PHP an FPM. Aktivieren Sie mit sudo a2ensite ps8.local.conf && sudo a2enmod rewrite proxy_fcgi && sudo systemctl reload apache2. Fügen Sie 127.0.0.1 ps8.local zu /etc/hosts hinzu.

Dateiberechtigungen

Setzen Sie alles auf den Eigentümer www-data, Verzeichnisse auf 755, Dateien auf 644 und die beschreibbaren Verzeichnisse (var/, cache/, img/, upload/, config/) auf 775. Wir haben hundertmal weiße Seiten unter Linux debuggt, und in 90 davon lautete die Antwort: Berechtigungen. Prüfen Sie das Apache-Error-Log auf „Permission denied", bevor Sie sonst etwas tun.

Option 5: Docker: was wir tatsächlich verwenden

Jede PrestaShop-Version erhält ihren eigenen Container mit eigenem PHP und MySQL. Nichts kollidiert, nichts geht zwischen den Shops über. Wir betreiben unsere gesamte Flotte aus 25 Containern auf diese Weise. Es gibt einen vollständigen Docker-Leitfaden, der Setups über mehrere Versionen abdeckt, aber der Ausgangspunkt ist dieser:

Eine funktionierende docker-compose.yml

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:

Fahren Sie es mit docker compose up -d hoch und öffnen Sie http://localhost:8085.

Wir betreiben mehr als 25 PrestaShop-Container auf einem einzigen TrueNAS-Host (PS 1.6 bis 9.1) für Modultests. Das mit etwas anderem als Docker zu verwalten, wäre ein Vollzeitjob. Schon bei zwei oder drei Versionen zahlt sich Docker beim ersten Mal aus, wenn Sie sonst auf einen PHP-Versionskonflikt gestoßen wären.

Konfiguration, die für jede Methode gilt

Die PHP-Erweiterungen, ohne die PrestaShop nicht läuft

  • intl: Währung, Locale, Datumsformatierung. Die mit Abstand am häufigsten fehlende.
  • gd: Bildverarbeitung, Thumbnails, Wasserzeichen.
  • curl: Zahlungs-Gateways, Webservice-API, alles Ausgehende.
  • mbstring: UTF-8-Zeichenkettenverarbeitung. Ohne sie bricht Mehrbyte-Text stillschweigend.
  • zip: Modulinstallationen lesen ZIPs hierüber ein.
  • xml: Import/Export und der Webservice.
  • pdo_mysql: Datenbankverbindung.
  • opcache: technisch optional, aber auf einem echten Shop ist der Unterschied in Sekunden pro Anfrage messbar.

Prüfen Sie mit php -m | grep intl oder legen Sie eine temporäre phpinfo()-Datei ab und löschen Sie sie, sobald Sie fertig sind.

Sprechende URLs

Apache: sudo a2enmod rewrite, setzen Sie AllowOverride All in Ihrem vhost. Nginx: try_files $uri $uri/ /index.php?$args;. Schalten Sie dann den Schalter unter Shop-Parameter > Datenverkehr & SEO ein.

E-Mail-Tests mit Mailpit

Fangen Sie jede ausgehende E-Mail lokal ab, anstatt versehentlich einem Kunden von Ihrem Dev-Rechner aus zu mailen:

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

In den SMTP-Einstellungen von PrestaShop: Server localhost, Port 1025, keine Verschlüsselung, keine Authentifizierung. Lesen Sie die abgefangenen Mails unter http://localhost:8025.

IDE-Einrichtung

VS Code (kostenlos): die Erweiterungen PHP Intelephense und PHP Debug. Xdebug auf Port 9003 mit pathMappings vom Containerpfad auf Ihren Workspace. PHPStorm (kostenpflichtig): eingebaute PHP-Unterstützung, Xdebug, Datenbankwerkzeuge und Docker-Integration. Wir nutzen beide. PHPStorm zahlt sich aus, wenn PHP das ist, womit Sie Ihren Lebensunterhalt verdienen.

Einen Live-Shop lokal importieren

Gegen eine frische PrestaShop-Installation zu testen, fängt nur die einfachen Fehler ab. Echte Fehler stecken in den Theme-Overrides, den 80 installierten Modulen und dem Katalog mit 12.000 Produkten. Ziehen Sie ihn herunter und reproduzieren Sie ihn lokal. Falls die Live-Datenbank zu schwer ist, um sie bequem zu verschieben, bereinigen Sie zunächst Logs, abgelaufene Warenkörbe und andere Wegwerfdaten mit Database Cleanup und exportieren Sie dann.

Datenbank exportieren und importieren

# Export aus der Produktion (per SSH: phpMyAdmin läuft bei großen DBs in einen Timeout)
mysqldump -u db_user -p database_name > prestashop_backup.sql

# Lokale Datenbank erstellen
mysql -u root -p -e "CREATE DATABASE prestashop_local CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

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

Dateien kopieren und die URLs umschreiben

Ziehen Sie die Verzeichnisse herunter, auf die es wirklich ankommt, img/, modules/, themes/, config/, override/, upload/: rsync -avz user@server:/path/to/prestashop/ /local/prestashop/

-- Domain auf lokal ändern
UPDATE ps_shop_url SET domain = 'localhost:8080', domain_ssl = 'localhost:8080' WHERE id_shop_url = 1;

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

Bearbeiten Sie app/config/parameters.php (PS 1.7/8.x) oder config/settings.inc.php (PS 1.6) mit den lokalen DB-Zugangsdaten und leeren Sie dann den Cache: rm -rf var/cache/*.

Sobald Sie importiert haben, erstellen Sie ein brandneues Admin-Konto für die lokale Nutzung und melden Sie sich nicht mit den Produktiv-Zugangsdaten an. Wir haben erlebt, wie Anwender vergessen, welcher Tab welcher ist, und eine Kategoriebeschreibung im Live-Shop bearbeiten. Neues lokales Konto, neues Passwort, leicht auseinanderzuhalten.

Die Probleme, auf die Kunden am häufigsten stoßen

Weißer Bildschirm nach der Installation

Lesen Sie immer zuerst das Log. Die Antwort steht fast immer in einer einzigen Zeile darin:

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

Fehlende Erweiterung: Call to undefined function im Log verrät Ihnen, welche. Speicher: Allowed memory size exhausted, erhöhen Sie memory_limit. Falsches PHP: PS 8.x auf PHP 7.4 wirft Typfehler; php -v lügt nicht.

Admin-Panel liefert 404 bei jeder URL außer dem Dashboard

mod_rewrite ist nicht aktiv, oder die .htaccess wird nicht gelesen. sudo a2enmod rewrite, AllowOverride All im vhost. Bei XAMPP ändern Sie in der httpd.conf AllowOverride None auf AllowOverride All.

Quälend langsam unter Windows

Antivirus: Fügen Sie Ihre XAMPP- und PrestaShop-Verzeichnisse zu den Ausnahmen von Windows Defender hinzu. Der Unterschied ist dramatisch. Docker auf WSL2: Halten Sie die PrestaShop-Dateien im eigenen Dateisystem von WSL2 unter /home/you/prestashop/, niemals unter /mnt/c/.... Über WSL2 eingehängte Windows-Volumes sind langsam genug, um PrestaShop unbrauchbar zu machen.

Bilder werden nicht geladen

Kein GD: installieren Sie php-gd. Berechtigungen: chown -R www-data:www-data img/. Importierter Shop: Erzeugen Sie die Thumbnails unter Design > Bildeinstellungen neu, ohne das verweist das Front Office auf Dateien, die lokal nie erstellt wurden.

Modulinstallation schlägt fehl

„Cannot upload": erhöhen Sie upload_max_filesize und post_max_size auf 64M. „Cannot unzip": installieren Sie php-zip. „Permission denied": chmod 775 modules/. „Class not found": veralteter Klassenindex, löschen Sie var/cache/*/class_index.php und laden Sie neu.

Datenbankverbindung abgelehnt

MySQL läuft nicht, sudo systemctl status mysql. „Access denied" bedeutet, dass die Zugangsdaten in Ihrer Konfiguration nicht mit dem übereinstimmen, was MySQL gespeichert hat.

Arbeitsgewohnheiten, die sich lohnen

Schalten Sie den Dev-Modus ein. In config/defines.inc.php: define('_PS_MODE_DEV_', true);. Sie erhalten Stack-Traces und SQL-Details statt leerer Seiten. Lassen Sie das niemals auf einem Produktiv-Shop aktiv, es legt Pfade und Abfragen offen.

Schalten Sie das Caching lokal aus. Backoffice > Erweiterte Einstellungen > Leistung, Smarty-Cache „Nein", CCC aus. Zwischengespeicherte Templates und Assets verbergen Änderungen, die Sie gerade vorgenommen haben, und verschwenden eine Stunde Ihres Lebens.

Git, selbst für ein einziges Modul. git init im Modulverzeichnis, committen Sie bei jedem funktionierenden Stand. git diff zeigt Ihnen, was sich geändert hat, git checkout -- file.php macht das Experiment rückgängig, das nicht funktioniert hat. Wir committen über unsere Modulflotte hinweg Dutzende Male am Tag.

Kurzreferenz: welches PHP für welches PrestaShop

  • 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+
Gleichen Sie die offiziellen Systemanforderungen für das exakte Patch-Release ab, auf dem Sie sind, Minor-Versionen verengen den unterstützten PHP-Bereich überraschend oft.

Weiterführende Lektüre

Passende Fragen

Lade ...
Nach oben