Troubleshooting
This guide helps resolve common issues encountered with PCH-SIG.
Quick diagnosis
Check service status
# Container status
docker ps -a
# Application health
curl http://localhost:8000/api/health
Diagnostic script
# diagnostic.ps1
Write-Host "=== PCH-SIG Diagnostic ===" -ForegroundColor Cyan
# Docker
Write-Host "`n[Docker]"
docker-machine status default
# Containers
Write-Host "`n[Containers]"
docker-machine ssh default "docker ps --format 'table {{.Names}}\t{{.Status}}'"
# Ports
Write-Host "`n[Ports]"
netsh interface portproxy show all
# Tests
Write-Host "`n[Tests]"
try {
Invoke-WebRequest -Uri "http://localhost:3000" -UseBasicParsing -TimeoutSec 5 | Out-Null
Write-Host "Frontend: OK" -ForegroundColor Green
} catch {
Write-Host "Frontend: ERROR" -ForegroundColor Red
}
try {
Invoke-WebRequest -Uri "http://localhost:8000/api" -UseBasicParsing -TimeoutSec 5 | Out-Null
Write-Host "API: OK" -ForegroundColor Green
} catch {
Write-Host "API: ERROR" -ForegroundColor Red
}
Connection problems
"Connection refused" on frontend
Symptoms: Browser displays "Connection refused" at http://localhost:3000
Possible causes:
- Frontend container not started
- Port proxy not configured
Solutions:
# Check container
docker ps | grep pch_frontend
# If stopped, restart
docker start pch_frontend
# Check port proxy
netsh interface portproxy show v4tov4
# Reconfigure if needed
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.99.100
"502 Bad Gateway" on API
Symptoms: API requests return 502 error
Possible causes:
- PHP backend not started
- Nginx backend misconfigured
Solutions:
# Check containers
docker ps | grep -E "(pch_backend|pch_nginx_backend)"
# Check logs
docker logs pch_backend --tail 50
docker logs pch_nginx_backend --tail 50
# Restart
docker restart pch_backend pch_nginx_backend
"401 Unauthorized"
Symptoms: All API requests return 401
Possible causes:
- JWT token expired
- Invalid JWT keys
Solutions:
# Check JWT keys
docker exec pch_backend ls -la config/jwt/
# Regenerate keys
docker exec pch_backend php bin/console lexik:jwt:generate-keypair --overwrite
# Clear cache
docker exec pch_backend php bin/console cache:clear
Database problems
"Connection refused" PostgreSQL
Symptoms: Database connection error
Solutions:
# Check container
docker ps | grep pch_postgres
# Check logs
docker logs pch_postgres --tail 50
# Test connection
docker exec pch_postgres psql -U pch_admin -d pch_sig -c "SELECT 1;"
"Relation does not exist"
Symptoms: Error "relation X does not exist"
Cause: Migrations not executed
Solution:
# Run migrations
docker exec pch_backend php bin/console doctrine:migrations:migrate --no-interaction
# Verify schema
docker exec pch_backend php bin/console doctrine:schema:validate
Corrupted database
# Check integrity
docker exec pch_postgres psql -U pch_admin -d pch_sig -c "
SELECT 'menages' as table_name, count(*) FROM menages
UNION ALL
SELECT 'beneficiaires', count(*) FROM beneficiaires
UNION ALL
SELECT 'paiements', count(*) FROM paiements;"
# If problem, restore from backup
docker exec -i pch_postgres psql -U pch_admin -d pch_sig < backup.sql
Docker problems
Docker Machine doesn't start
# Check VirtualBox
& "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms
# Start manually
docker-machine start default
# If error, regenerate certificates
docker-machine regenerate-certs default
Container in continuous restart
Symptoms: Container with "Restarting" status
# View logs
docker logs pch_backend
# Common causes:
# - Configuration error
# - Missing dependency
# - Incorrect permissions
# Start in interactive mode for debugging
docker-compose run --rm backend bash
Insufficient disk space
# Check space
docker system df
# Clean up
docker system prune -a --volumes
Performance problems
Slow application
Diagnosis:
# Check resource usage
docker stats
# Slow PostgreSQL queries
docker exec pch_postgres psql -U pch_admin -d pch_sig -c "
SELECT query, calls, mean_time, total_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;"
Solutions:
# Clear Redis cache
docker exec pch_redis redis-cli -a redis_secure_2025 FLUSHALL
# Optimize PostgreSQL
docker exec pch_postgres psql -U pch_admin -d pch_sig -c "VACUUM ANALYZE;"
# Clear Symfony cache
docker exec pch_backend php bin/console cache:clear --env=prod
Insufficient memory
# Increase container memory in docker-compose.yml
services:
backend:
deploy:
resources:
limits:
memory: 1G
Authentication problems
Cannot login
Checks:
# Verify user exists
docker exec pch_postgres psql -U pch_admin -d pch_sig -c "
SELECT email, roles, is_active FROM users WHERE email = 'admin@pch-sig.sn';"
# Reset password
docker exec pch_backend php bin/console app:reset-password admin@pch-sig.sn NewPassword123!
Invalid JWT token
# Check keys
docker exec pch_backend ls -la config/jwt/
# Check permissions
docker exec pch_backend stat config/jwt/private.pem
# Regenerate
docker exec pch_backend php bin/console lexik:jwt:generate-keypair --overwrite
Frontend problems
Blank page
Possible causes:
- Missing build
- JavaScript error
Solutions:
# Check build
ls -la frontend/build/
# Rebuild
cd frontend
npm run build
# Check browser console (F12)
Service Worker blocking updates
// Force update
// In browser console
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
registration.unregister();
}
});
Or increment version in service-worker.js:
const CACHE_NAME = 'pch-sig-cache-v3';
CORS errors
Symptoms: "CORS policy" error in console
Solutions:
# Check CORS configuration
docker exec pch_backend cat .env | grep CORS
# Modify if needed
CORS_ALLOW_ORIGIN='^https?://(localhost|192\.168\.1\.*)(:[0-9]+)?$'
# Restart
docker restart pch_backend
File problems
Upload fails
# Check permissions
docker exec pch_backend ls -la public/uploads/
# Fix
docker exec pch_backend chown -R www-data:www-data public/uploads/
docker exec pch_backend chmod -R 775 public/uploads/
Files not accessible
# Check volume mapping
docker inspect pch_backend | grep -A 10 Mounts
# Verify file exists
docker exec pch_backend ls -la public/uploads/documents/
Useful commands
Restart everything
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart"
Clear all caches
docker exec pch_backend php bin/console cache:clear
docker exec pch_redis redis-cli -a redis_secure_2025 FLUSHALL
Complete reset
# WARNING: Deletes all data!
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose down -v"
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose up -d"
Getting help
Information to provide
When asking for help, include:
- Problem description
- Steps to reproduce
- Complete error messages
- Relevant logs:
docker logs pch_backend --tail 100 > backend.log
docker logs pch_postgres --tail 50 > postgres.log - Container status:
docker ps -a > containers.txt