Cómo reparar el error Function putenv() was disabled en PrestaShop 1.7, 8.x, 9.x

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.

Cómo resolver el problema – panel DirectAdmin (Cyber Folks o Hostido)
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.
  1. Inicia sesión en el panel DirectAdmin – generalmente disponible en la dirección nombredominio.es:2222 o nombredominio.es:2223
  2. Ve a la sección Configuración de dominios
  3. Encuentra el dominio de tu tienda en la lista
  4. Cambia la opción Separación de dominios z a NO
  5. 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.
błąd Function putenv() - wyłączenie

błąd Function putenv() - wyłączenie
¿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 alojamientoDónde buscar la configuración
DirectAdmin (Cyber Folks)Configuración de dominios – Separación de dominios – NO
cPanelSelector de PHP o ModSecurity – comprueba las funciones de PHP desactivadas
PleskDominios – configuración de PHP – Funciones desactivadas
HestiaCPSin 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.

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compras

Cerrar

Su cesta está vacía.

Empezar a comprar

Barra lateral