Installation unter Windows mit XAMPP und PHP 8.2
Dieser Projektstand unterstützt PHP 8.2 auf 64-Bit-Systemen. Die Composer-Auflösung verwendet PHP 8.2.12 x64 als Zielplattform. Symfony bleibt bei 7.4; ZipStream ist durch Composer in der kompatiblen Version 3.1.2 festgelegt. Die Docker-Variante verwendet weiterhin PHP 8.3 und MySQL 8.4.
1. PHP und Sodium prüfen
In der Windows-Eingabeaufforderung:
cd /d C:\xampp8\htdocs\machinebridge
where php
php -v
php --ini
Für den gemeldeten XAMPP-Pfad ist die Konfiguration normalerweise C:\xampp8\php\php.ini; maßgeblich ist die Ausgabe von php --ini.
In dieser Datei Sodium aktivieren. Eine vorhandene Zeile wie ;extension=sodium oder ;extension=php_sodium.dll durch Entfernen des führenden Semikolons einschalten. Falls noch keine vorhanden ist, genau eine Zeile ergänzen:
extension=php_sodium.dll
Die DLL gehört zur passenden PHP-Installation und liegt normalerweise unter C:\xampp8\php\ext\php_sodium.dll. Wenn PHP einen Ladefehler meldet, zuerst Pfad, extension_dir und die zum installierten PHP passende DLL prüfen. Keine zufällige DLL aus einem anderen PHP-Paket kopieren.
Anschließend Apache im XAMPP-Control-Panel neu starten und in der Konsole prüfen:
php --ri sodium
Erwartet: sodium support => enabled. Die Konsole liest die INI bei jedem PHP-Aufruf neu. Für die Webanwendung gilt die INI-Konfiguration des Apache-PHP; deshalb ist auch dessen Neustart nötig.
Sodium wird zur Verschlüsselung von Webhook-Geheimnissen verwendet. Die Erweiterungsanforderung bleibt im Projekt bestehen. Fehlende Erweiterungen werden durch composer check-platform-reqs und den generierten Autoloader geprüft.
2. Abhängigkeiten installieren
Für eine bereits entpackte ältere ZIP die korrigierten composer.json und composer.lock aus diesem Paket übernehmen. Bereits vorhandene eigene .env.local, Uploads und Datenbank bleiben bei diesem Austausch erhalten.
composer install
composer check-platform-reqs
composer install erzeugt unter anderem vendor\autoload.php. Vor erfolgreicher Installation kann php bin/console nicht starten. Die Lockdatei wird von Composer verwaltet und nicht manuell bearbeitet. Zum Installieren dieser geprüften Paketversionen ist kein allgemeines composer update nötig.
composer.json enthält die Mindestversion und die Zielplattform. Ein bloßes Ändern der PHP-Version in der Lockdatei verändert weder den Code eines Pakets noch dessen wirkliche Anforderungen. Die passende Lockdatei wurde für diesen Stand durch Composer erzeugt; außer ZipStream blieb jede Paketversion erhalten.
3. Lokale Konfiguration und Datenbank
In XAMPP den Datenbankdienst starten. Im Projektordner .env.local anlegen oder vorhandene Werte gezielt ergänzen. Beispiel für eine lokale Datenbank auf Port 3306 mit Benutzer root ohne Passwort:
APP_ENV=dev
APP_DEBUG=1
APP_URL=http://machinebridge.local
DATABASE_URL="mysql://root@127.0.0.1:3306/machinebridge?charset=utf8mb4"
Benutzer, Passwort und Port an die eigene Installation anpassen. Die Versionsangabe wird hier weggelassen, damit Doctrine die tatsächliche MySQL-/MariaDB-Version erkennt. Der Docker-Hostname db gehört nicht in diese lokale Verbindung.
Ein eigenes Anwendungsgeheimnis erzeugen:
php -r "echo bin2hex(random_bytes(32)), PHP_EOL;"
Die Ausgabe als APP_SECRET in .env.local eintragen. Ein bestehendes echtes Geheimnis beibehalten, weil bereits verschlüsselte Webhook-Schlüssel davon abhängen.
Danach:
php bin/console doctrine:database:create --if-not-exists
php bin/console doctrine:migrations:migrate --no-interaction
php bin/console app:seed-taxonomy
Es werden die vorhandenen Migrationen verwendet. Keine zusätzliche Migration nur wegen eines anderen PHP-Interpreters erzeugen. Das Compose-Ziel bleibt MySQL 8.4; dieser PHP-8.2-Kompatibilitätsstand wurde mit einem echten MySQL-8.0-Server geprüft. Eine konkrete XAMPP-/MariaDB-Installation wurde hier nicht ausgeführt.
4. Apache auf den öffentlichen Ordner richten
Die Webadresse muss auf C:\xampp8\htdocs\machinebridge\public zeigen. Dort befinden sich der Frontcontroller und öffentliche Assets. Die übrigen Projektordner werden nicht als Webverzeichnis verwendet.
Beispiel für einen lokalen VirtualHost in C:\xampp8\apache\conf\extra\httpd-vhosts.conf:
<VirtualHost *:80>
ServerName machinebridge.local
DocumentRoot "C:/xampp8/htdocs/machinebridge/public"
<Directory "C:/xampp8/htdocs/machinebridge/public">
AllowOverride All
Require local
</Directory>
</VirtualHost>
Die VirtualHost-Datei muss in der Apache-Konfiguration eingebunden und mod_rewrite aktiviert sein. Die mitgelieferte public/.htaccess leitet Anwendungsrouten an Symfony weiter; vorhandene Dateien werden direkt ausgeliefert.
In der Windows-Hosts-Datei (C:\Windows\System32\drivers\etc\hosts) ergänzen:
127.0.0.1 machinebridge.local
Nach Apache-Neustart: http://machinebridge.local/de/catalog; Englisch unter /en/catalog, Japanisch unter /ja/catalog. Die Beispielkonfiguration erlaubt nur lokale Zugriffe.
5. Betreiberkonto
In PowerShell im Projektordner ein eigenes Passwort eingeben, damit es nicht als Klartext in der Befehlszeile steht:
$machinebridgeCredential = Get-Credential -UserName 'admin@example.com' -Message 'Betreiberpasswort mit mindestens 16 Zeichen eingeben'
$env:INITIAL_ADMIN_PASSWORD = $machinebridgeCredential.GetNetworkCredential().Password
php bin/console app:create-admin $machinebridgeCredential.UserName 'Meine Firma' --country=DE
Remove-Item Env:INITIAL_ADMIN_PASSWORD
Danach unter /de/login anmelden.
Externe Dienste
Der Katalog und die Verwaltung nutzen die installierte PHP-Anwendung und Datenbank. E-Mail-Zustellung, Warteschlangen, Virensuche, OCR, KI und Zahlungen benötigen zusätzlich die im Haupt-README beschriebenen Dienste und Zugangsdaten. Die Docker-Hostnamen mailpit und clamav werden von einer normalen XAMPP-Installation nicht automatisch bereitgestellt. Der Virenschutz wird für diese Installation nicht stillschweigend abgeschaltet.
Nach Einrichtung der benötigten Dienste kann der Worker in einem eigenen Terminal laufen:
php bin/console messenger:consume async --time-limit=3600
Für die vollständige Dienstekette einschließlich MySQL, ClamAV und Mailpit steht weiterhin die Compose-Installation zur Verfügung.
Referenzen: Symfony 7.4 und PHP-Anforderung, Sodium unter Windows, Composer und Zielplattform.