Error La función putenv() fue deshabilitada por el módulo de protección de dominio puede sorprender en el momento menos esperado – especialmente después de que la tienda ha funcionado sin problemas durante mucho tiempo. En este artículo explico de dónde viene este problema y cómo resolverlo rápidamente.
¿Qué es putenv()?
putenv() es una función PHP integrada que se utiliza para establecer variables de entorno durante la ejecución del script. PrestaShop la utiliza, entre otras cosas, durante la gestión de localizaciones y traducciones – la invoca al configurar la configuración regional para el idioma de la tienda. Sin esta función, la tienda puede seguir funcionando, pero comienzan a aparecer advertencias en los registros, y en algunas configuraciones los errores pueden ser visibles directamente en la página – lo que por supuesto es inaceptable en producción.
¿De dónde viene este error?
El problema es característico de los alojamientos compartidos que utilizan el mecanismo de protección de dominios (domain protection). Este mecanismo aísla los dominios individuales entre sí a nivel del sistema operativo, lo cual es una buena práctica de seguridad – pero al mismo tiempo bloquea ciertas funciones de PHP, incluyendo putenv(). El caso más popular es el alojamiento Cyber Folks y Hostido, que en algún momento comenzó a habilitar automáticamente esta opción para cada nuevo dominio o subdominio agregado. ¿El resultado? La tienda funcionaba sin problemas, agregaste un subdominio o redirigiste un dominio – y de repente comenzó a mostrar advertencias.
Advertencia
Si el error aparece directamente en la página de la tienda (no solo en los registros), desactiva inmediatamente la visualización de errores de PHP en la configuración del servidor o en el archivo config/defines.inc.php – los errores visibles en el frontend son un problema grave de imagen y seguridad.
El texto completo de la advertencia se ve así:
Advertencia de usuario: La función putenv() fue deshabilitada por el módulo de protección de dominio. Deshabilite la protección de dominio para este dominio en el Panel de Servidor para usar esta función.
La solución es muy simple y no requiere ninguna modificación en el código de la tienda. Solo necesitas desactivar la separación de dominios en el panel de alojamiento.
Inicia sesión en el panel DirectAdmin – generalmente disponible en la dirección nombredominio.es:2222 o nombredominio.es:2223
Ve a la sección Configuración de dominios
Encuentra el dominio de tu tienda en la lista
Cambia la opción Separación de dominios z SÍ a NO
Guardar cambios
Éxito
Después de desactivar la separación de dominios, el error debería desaparecer inmediatamente, sin necesidad de reiniciar el servidor ni reconstruir la caché de PrestaShop.
¿Y si tengo otro panel de alojamiento?
No todos los alojamientos utilizan DirectAdmin. A continuación, he recopilado dónde buscar esta opción en otros paneles populares:
Panel de alojamiento
Dónde buscar la configuración
DirectAdmin (Cyber Folks)
Configuración de dominios – Separación de dominios – NO
cPanel
Selector de PHP o ModSecurity – comprueba las funciones de PHP desactivadas
Plesk
Dominios – configuración de PHP – Funciones desactivadas
HestiaCP
Sin separación de dominios integrada – comprueba la configuración de PHP-FPM en /etc/php/X.X/fpm/pool.d/
Servidor propio (VPS/dedicado)
Archivo php.ini o php-fpm.conf – directiva disable_functions
Solución alternativa – servidor propio o sin acceso al panel
Si tienes acceso al archivo php.ini o a la configuración de PHP-FPM, comprueba si putenv no figura en la lista de funciones bloqueadas:
disable_functions = putenv, ...
Borrar putenv de esta lista y reinicia PHP-FPM:
systemctl restart php8.1-fpm
Nota
Ajusta el número de versión en el comando anterior a la versión de PHP utilizada por tu tienda. Puedes verificarlo en el panel de alojamiento o a través del archivo phpinfo().
¿Vale la pena preocuparse por este error?
Sí. Aunque la tienda a menudo funciona aparentemente normal a pesar de esta advertencia:
el error puede aparecer en la página para los clientes (dependiendo de la configuración de visualización de errores de PHP)
en algunas versiones de PrestaShop, la configuración incorrecta de locale puede causar problemas con la generación de facturas en PDF o traducciones de correos electrónicos
Las advertencias acumuladas en los registros dificultan el diagnóstico de problemas reales
Consejo
Después de agregar cada nuevo dominio o subdominio al alojamiento de Cyber Folks, ingresa inmediatamente en la configuración del dominio y verifica la opción de separación – se activa automáticamente de forma predeterminada y es mejor desactivarla antes de que la tienda comience a generar errores.
¿Tienes otras preguntas sobre la configuración de PrestaShop o problemas de alojamiento? Deja un comentario a continuación.
ID utilizado para identificar a los usuarios durante 24 horas después de la última actividad
24 horas
_gat
Se utiliza para supervisar el número de solicitudes del servidor de Google Analytics cuando se utiliza Google Tag Manager.
1 minuto
No te preocupes.
Contiene información relacionada con las campañas de marketing del usuario. Se comparten con Google AdWords / Google Ads cuando las cuentas de Google Ads y Google Analytics están vinculadas.
90 días
__utma
ID utilizado para identificar usuarios y sesiones
2 años después de la última actividad
__utmt
Se utiliza para controlar el número de solicitudes del servidor de Google Analytics
10 minutos
__utmb
Se utiliza para distinguir nuevas sesiones y visitas. Esta cookie se establece cuando se carga la biblioteca javascript GA.js y no existe ninguna cookie __utmb. La cookie se actualiza cada vez que se envían datos al servidor de Google Analytics.
30 minutos después de la última actividad
__utmc
Sólo se utiliza con las versiones antiguas de Urchin de Google Analytics y no con GA.js. Se utilizaba para distinguir entre nuevas sesiones y visitas al final de una sesión.
Fin de sesión (navegador)
__utmz
Contiene información sobre la fuente de tráfico o la campaña que dirigió al usuario al sitio web. La cookie se instala cuando se carga el javascript GA.js y se actualiza cuando se envían datos al servidor de Google Anaytics.
6 meses después de la última actividad
__utmv
Contiene información personalizada establecida por el desarrollador web a través del método _setCustomVar de Google Analytics. Esta cookie se actualiza cada vez que se envían nuevos datos al servidor de Google Analytics.
2 años después de la última actividad
__utmx
Se utiliza para determinar si un usuario está incluido en una prueba A / B o Multivariante.
18 meses
_ga
ID utilizado para identificar a los usuarios
2 años
_gali
Utilizado por Google Analytics para determinar en qué enlaces de una página se hace clic.
30 segundos
No.
ID utilizado para identificar a los usuarios
2 años
SourceBuster es usado por WooCommerce para la atribución de pedidos basada en la fuente del usuario.
Nombre
Descripción
Duración
sbjs_session
El número de páginas vistas en esta sesión y la ruta de la página actual
30 minutos
sbjs_udata
Información sobre el agente de usuario del visitante, como la IP, el navegador y el tipo de dispositivo
sesión
sbjs_first
Información sobre el origen del tráfico de la primera visita del visitante a su tienda (sólo aplicable si el visitante vuelve antes de que caduque la sesión)
sesión
sbjs_actual
Información sobre el origen del tráfico de la visita actual del visitante a su tienda
sesión
sbjs_first_add
Marca de tiempo, URL de referencia y página de entrada de la primera visita del visitante a su tienda (sólo aplicable si el visitante vuelve antes de que caduque la sesión).
sesión
sbjs_current_add
Marca de tiempo, URL de referencia y página de entrada de la visita actual del visitante a su tienda
sesión
sbjs_migrations
Datos técnicos para facilitar las migraciones entre distintas versiones de la función de seguimiento