From 729474b138b7554cadbe858f2821ca7ee56f3167 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 12 Mar 2026 17:13:11 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20PHP=20sessions=20=E2=86=92=20Redis=20cor?= =?UTF-8?q?recto=20(session.save=5Fpath=20con=20host=20real)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit php.ini NO expande variables de entorno, estaba hardcodeado 'tcp://redis:6379'. PHP intentaba conectar al host inexistente 'redis' en cada request → timeout 10s en session_start() → todos los scripts tardaban 10-13s. Solución: - entrypoint.sh reescribe session.save_path con el host/password real al inicio - php.ini actualizado con placeholder (sobreescrito por entrypoint de todas formas) --- docker/entrypoint.sh | 9 +++++++++ docker/php/php.ini | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 0602cef..f0daa21 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -7,6 +7,15 @@ echo "🚀 Iniciando WhatsApp Bot Manager..." # Redis es gestionado por Coolify (externo) — no esperar, la app conecta cuando necesita echo "ℹ️ Redis externo (${REDIS_HOST:-no configurado}), omitiendo verificación de conectividad..." +# Configurar session.save_path con host/password real de Redis +# php.ini no expande variables de entorno, por eso se hace aquí +REDIS_SESSION_PATH="tcp://${REDIS_HOST:-127.0.0.1}:${REDIS_PORT:-6379}" +if [ -n "${REDIS_PASSWORD}" ]; then + REDIS_SESSION_PATH="${REDIS_SESSION_PATH}?auth=${REDIS_PASSWORD}" +fi +sed -i "s|session.save_path.*|session.save_path = \"${REDIS_SESSION_PATH}\"|" /usr/local/etc/php/conf.d/custom.ini +echo "✅ PHP sessions → Redis: ${REDIS_HOST:-127.0.0.1}:${REDIS_PORT:-6379}" + # Esperar a que MySQL esté disponible if [ "${DB_HOST}" = "mysql" ] || [ "${DB_HOST}" = "db" ]; then echo "⏳ Esperando MySQL local..." diff --git a/docker/php/php.ini b/docker/php/php.ini index b7e0384..0406c72 100644 --- a/docker/php/php.ini +++ b/docker/php/php.ini @@ -26,9 +26,9 @@ disable_functions = [curl] curl.cainfo = /etc/ssl/certs/ca-certificates.crt -; Session +; Session — usar variables de entorno para Redis (Coolify las inyecta) session.save_handler = redis -session.save_path = "tcp://redis:6379" +session.save_path = "tcp://${REDIS_HOST}:${REDIS_PORT}?auth=${REDIS_PASSWORD}" session.gc_maxlifetime = 3600 session.cookie_httponly = 1 session.use_strict_mode = 1