Ohne Root laesst sich das .deb trotzdem auspacken und einbinden. Damit laeuft der PayPal-Mailabruf jetzt auch lokal testbar - bisher fiel er hier sofort mit "Die PHP-IMAP-Erweiterung ist nicht installiert" aus. Die Schritte stehen in docs/dev-mysql.md, weil .local/ von Git ignoriert wird und die Umgebung sonst nicht reproduzierbar waere. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.5 KiB
Lokaler MySQL-Dev-Start
Die Legacy-App kann für Entwicklung gegen MySQL laufen. Dafür gibt es eine
Kompatibilitätsschicht, die die verwendeten sqlsrv_*-Funktionen im Dev-Modus
auf PDO/MySQL abbildet.
Voraussetzungen
- PHP CLI mit
pdo_mysql. - MySQL-Testdatenbank.
- Keine Produktivdaten und keine Produktivpasswörter im Repository.
In dieser VS-Code-Server-Umgebung wurde PHP lokal unter .local/ entpackt,
weil sudo nicht passwordless verfügbar war. .local/ wird von Git ignoriert.
Nachträglich eine Erweiterung ergänzen (Beispiel imap)
Ohne Root lässt sich ein .deb trotzdem auspacken und einbinden — so kam
die imap-Erweiterung für den PayPal-Mailabruf dazu:
cd .local/debs
curl -O http://archive.ubuntu.com/ubuntu/pool/universe/p/php8.3/php8.3-imap_8.3.6-0ubuntu0.24.04.10_amd64.deb
curl -O http://archive.ubuntu.com/ubuntu/pool/universe/u/uw-imap/libc-client2007e_2007f~dfsg-7build3_amd64.deb
dpkg-deb -x php8.3-imap_*.deb ../php
dpkg-deb -x libc-client2007e_*.deb ../php
# imap.so sucht libc-client.so.2007e im LD_LIBRARY_PATH aus .env.local:
cp -a ../php/usr/lib/libc-client.so.2007e.0 ../php/usr/lib/x86_64-linux-gnu/
ln -sf libc-client.so.2007e.0 ../php/usr/lib/x86_64-linux-gnu/libc-client.so.2007e
echo 'extension=imap.so' >> ../php-dev.ini
Die Paketversion muss zur PHP-Version passen (20230831 = PHP 8.3). Auf
dem Webspace geht das nicht — dort entscheidet der Anbieter, welche
Erweiterungen es gibt; siehe docs/deployment.md, Abschnitt
PayPal-Postfach.
Umgebungsvariablen
export APP_DB_DRIVER=mysql
export DB_HOST="example.mysql.host"
export DB_PORT="3306"
export DB_NAME="example_database"
export DB_USER="example_user"
export DB_PASS="example_password"
export DEV_AUTH_EMAIL="admin@test.local"
export DEV_AUTH_NAME="Test Admin"
# Optional: Standard ist var/sessions im Repository.
export APP_SESSION_PATH="/path/to/writable/sessions"
# Optional für Passwort-Reset und E-Mail-Verifikation.
export APP_BASE_URL="http://127.0.0.1:8080"
export APP_MAIL_TRANSPORT="log"
export APP_MAIL_LOG_DIR="/path/to/writable/mail-log"
export APP_MAIL_FROM="noreply@example.test"
export APP_MAIL_FROM_NAME="Kaffeeliste"
Testdatenbank initialisieren
Migrationen anwenden:
php scripts/migrate.php
Dev-Admin und Basistestdaten anlegen:
php scripts/init-mysql-dev.php
In der aktuellen lokalen Umgebung:
LD_LIBRARY_PATH="$PWD/.local/php/usr/lib/x86_64-linux-gnu" \
"$PWD/.local/php/usr/bin/php8.3" \
-c "$PWD/.local/php-dev.ini" \
scripts/init-mysql-dev.php
Server starten
HOST=127.0.0.1 PORT=8080 scripts/run-dev-server.sh
Danach ist die App unter http://127.0.0.1:8080/ erreichbar. In VS Code kann
der Port über die Ports-Ansicht weitergeleitet werden.
Hinweise
- Der Dev-Login umgeht AD/LDAP und nutzt
DEV_AUTH_EMAIL. - Der Dev-Mailversand nutzt standardmäßig
APP_MAIL_TRANSPORT=logund legt Nachrichten untervar/mailab. Für Produktion kann zunächstAPP_MAIL_TRANSPORT=mailmit passendemAPP_BASE_URLund Absender gesetzt werden; eine SMTP-/Provider-Anbindung bleibt ein späterer Betriebsausbau. - Die Tabellen werden über
database/migrations/angelegt. database/mysql-dev-schema.sqlbleibt als historische Dev-Schema-Baseline erhalten; der aktive Weg istscripts/migrate.php.- Session-Dateien liegen standardmäßig unter
var/sessions;var/wird von Git ignoriert. - Der Dev-Modus ist nur für lokale Tests gedacht, nicht für Produktion.