62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# Testing & Debugging
|
||
|
||
## Запуск воркера локально
|
||
|
||
```bash
|
||
frankenphp run --config Caddyfile
|
||
```
|
||
|
||
Убедись, что переменные окружения заданы (`.env` или `environment.php`).
|
||
|
||
---
|
||
|
||
## Отладка запросов
|
||
|
||
Включи подробное логирование через конфиг:
|
||
|
||
```php
|
||
Config::get('log.level') // DEBUG для максимального вывода
|
||
```
|
||
|
||
Логи пишутся через `LoggerInterface` (Monolog). Смотри `architecture/logging.md` для деталей.
|
||
|
||
---
|
||
|
||
## Частые проблемы
|
||
|
||
### Воркер не стартует
|
||
|
||
- Проверь синтаксис `Caddyfile` и путь до `worker.php`
|
||
- FrankenPHP требует `FRANKENPHP_CONFIG` или явного указания воркер-скрипта
|
||
- Проверь, что `Kernel::init()` вызван до первого запроса
|
||
|
||
### Маршрут не найден (404)
|
||
|
||
- Убедись, что файл с `RouteDefinition` лежит в `routes/` (autoload подхватывает автоматически)
|
||
- Проверь HTTP-метод и путь: параметры вида `{id}` чувствительны к паттерну
|
||
|
||
### JWT не валидируется
|
||
|
||
- Проверь, что `Config::get('auth.secret')` не пустой
|
||
- Убедись, что `AuthMiddleware` зарегистрирован в контейнере
|
||
- Время жизни токена — `Config::get('auth.ttl')`
|
||
|
||
### Ошибка CORS
|
||
|
||
- `CorsMiddleware` требует явного конфига (список разрешённых origins)
|
||
- Если конфиг не задан — бросается `RuntimeException` при старте
|
||
|
||
### MongoDB не подключается
|
||
|
||
- Проверь DSN в конфиге: `Config::get('mongodb.dsn')`
|
||
- Проверь, что MongoDB-сервис запущен и доступен из воркера
|
||
|
||
---
|
||
|
||
## Инспекция контейнера
|
||
|
||
```php
|
||
// В dev-режиме: посмотреть все зарегистрированные сервисы
|
||
$ids = Kernel::getContainer()->getServiceIds();
|
||
```
|