Прежняя git-история утрачена при переносе проекта на машину владельца (снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной истории. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2 KiB
2 KiB
server/ — PHP API личного кабинета (этап 8)
Без фреймворка, синтаксис ≥ PHP 8.0. Контракт: docs/INTERFACES.md,
раздел «Личный кабинет и синхронизация прогресса (этап 8)», ADR-0004.
Структура
api/— эндпоинты:register,login,logout,me,progress,health(на хостинге —/api/*.php).lib/— общий код:db.php(PDO + init-миграция),http.php(заголовки/JSON/лимит тела),auth.php(сессии),ratelimit.php.config.example.php— пример конфига. Скопировать вconfig.php(не коммитится, см. корневой.gitignore), указать путь к БД вне web root. EnvGOLEARN_DBимеет приоритет (нужно smoke-тесту).tests/smoke.sh— смоук-тест по контракту.
Локальный запуск smoke-теста
Нужны PHP ≥ 8.0 с pdo_sqlite и curl:
PHP=/path/to/php sh server/tests/smoke.sh
(по умолчанию используется /tmp/php-run; можно просто
sh server/tests/smoke.sh, если /tmp/php-run существует, или задать
PHP=$(command -v php)).
Скрипт поднимает php -S 127.0.0.1:8099 -t server/ с временной БД в
/tmp (через GOLEARN_DB), гонит curl-сценарий из контракта
(register/login/me/progress/413/429/logout) и удаляет временные файлы.
Код выхода ненулевой при любом фейле.
Деплой (кратко)
server/ → /api на хостинге, config.php — рядом, файл БД — вне
web root, права на запись в каталог БД у PHP. Smoke на хостинге =
зелёный GET /api/health.php. Подробности — docs/deploy.md (V.2).