Решение проблем
Диагностика типичных ошибок при установке и работе JournalPHP.
Команды приведены для локального окружения. В продакшене после docker compose добавляется -f docker-compose.prod.yml.
Контейнер app не запускается
docker compose ps
docker compose logs db
docker compose logs appПроверьте в .env параметры DB_DATABASE, DB_USERNAME и DB_PASSWORD.
Миграции не применились
Применить новые миграции:
docker compose exec app php artisan migrate --forceЕсли база данных пересоздана пустой, удалите метку storage/.dev-initialized и перезапустите app: миграции применятся вместе с начальными данными.
docker compose exec app rm -f storage/.dev-initialized
docker compose restart appНе работают очереди, планировщик или WebSocket
Horizon, планировщик и Reverb запускаются через Supervisor внутри контейнера app:
docker compose exec app supervisorctl status
docker compose exec app supervisorctl tail -f horizon
docker compose exec app supervisorctl tail -f reverbДля WebSocket проверьте, что порт 9001 доступен, а переменные REVERB_* и VITE_REVERB_* в .env заполнены и согласованы — см. Конфигурация.
Фронтенд не обновляется
docker compose logs frontend
docker compose restart frontendVite должен отвечать по адресу http://localhost:5173.
Письма не отправляются
Проверьте настройки почты и storage/logs/laravel.log — см. Почта.
Ошибки доступа к storage/
docker compose exec app chown -R www-data:www-data storage bootstrap/cache
docker compose exec app chmod -R 775 storage bootstrap/cache/horizon или /log-viewer возвращает 403
Доступ получают только пользователи из списков в Админ-панель → Система → Доступы — см. Адреса сервисов.
Белый экран или ошибка 500
docker compose logs app
docker compose exec app php artisan optimize:clearПодробности ошибки — в storage/logs/laravel.log.
Медиафайлы не загружаются или не отображаются
docker compose exec app php artisan storage:linkОграничения на размер и типы файлов и учётные данные внешних хранилищ задаются в Админ-панель → Настройки → Интерфейс → Медиа — см. Настройки сайта.
Поиск ничего не находит
При Algolia или Meilisearch проверьте ключи и запустите синхронизацию индекса — см. Поиск. Синхронизация выполняется в очереди, поэтому Horizon должен работать.
Логи
- Laravel:
storage/logs/laravel.logили/log-viewer - Контейнеры:
docker compose logs <service> - Очереди:
/horizon - Supervisor:
docker compose exec app supervisorctl tail -f <program> - Фронтенд: консоль браузера
Доступ к /horizon и /log-viewer описан в разделе Адреса сервисов.
Если проблема не решена, создайте issue.