107 lines
3.6 KiB
Markdown
107 lines
3.6 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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 DB_TABLE_PREFIX="test_"
|
|
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:
|
|
|
|
```bash
|
|
php scripts/migrate.php
|
|
```
|
|
|
|
Dev-Admin und Basistestdaten anlegen:
|
|
|
|
```bash
|
|
php scripts/init-mysql-dev.php
|
|
```
|
|
|
|
In der aktuellen lokalen Umgebung:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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=log` und legt
|
|
Nachrichten unter `var/mail` ab. Für Produktion kann zunächst
|
|
`APP_MAIL_TRANSPORT=mail` mit passendem `APP_BASE_URL` und Absender gesetzt
|
|
werden; eine SMTP-/Provider-Anbindung bleibt ein späterer Betriebsausbau.
|
|
- Die Tabellen werden über `database/migrations/` mit dem Prefix aus
|
|
`DB_TABLE_PREFIX` angelegt. Lokal und auf Staging ist das `test_`, in
|
|
Produktion ausschließlich `prod_`.
|
|
- `database/mysql-dev-schema.sql` bleibt als historische Dev-Schema-Baseline
|
|
erhalten; der aktive Weg ist `scripts/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.
|