Protege tu API key con variables de entorno

Resumen

Dejar el API key directamente en el código es una falla de seguridad común cuando trabajas con servicios como OpenAI en PHP. Si subes ese proyecto a GitHub, expones tus credenciales al mundo. La solución pasa por usar variables de entorno y un componente especializado que las cargue de forma segura.

¿Por qué no debes dejar el API key en el código?

Cuando tu API key vive dentro del archivo PHP, cualquier persona con acceso al repositorio puede verla y usarla. Y aquí viene lo incómodo: si ese repositorio es público, el riesgo se multiplica. Por eso necesitas separar la configuración sensible del código fuente.

¿Qué es una variable de entorno? Es un valor que vive fuera del código, en un archivo aparte, y que tu aplicación lee en tiempo de ejecución. Permite mover credenciales sin tocar la lógica del proyecto.

¿Cómo configurar el archivo .env y .env.example en tu proyecto?

La estructura parte de dos archivos que cumplen funciones distintas. Uno se sube al repositorio, el otro nunca [00:18].

  • .env.example: archivo plantilla que sí se sube a GitHub. Contiene los nombres de las variables vacías, por ejemplo OPENAI=. Sirve como referencia para quien clone tu proyecto.
  • .env: archivo real con tus credenciales. Nunca se sube al repositorio y debe estar listado en el .gitignore para que el sistema lo ignore.

Cuando agregas .env al .gitignore, notarás que el archivo cambia de color en tu editor. Esa es la señal visual de que está protegido.

¿Cómo instalar y usar vlucas/phpdotenv en PHP?

El componente más utilizado para cargar variables de entorno en PHP se busca en el gestor de paquetes como env y se instala vía Composer [01:25]. Una vez ejecutado el comando de instalación, tu composer.json queda actualizado con la nueva dependencia.

El flujo de configuración tiene tres pasos claros:

  1. Mover el API key desde el código hacia el archivo .env, dejando algo como OPENAI=tu_clave_secreta.
  2. Reemplazar la cadena en el código por $_ENV['OPENAI'], que lee directamente desde las variables de entorno [02:05].
  3. Inicializar el cargador del componente al arranque del proyecto, indicando la ruta donde vive el archivo .env.

¿Dónde colocar la inicialización del archivo .env?

Si tu ejecutable vive dentro de una carpeta como bin, el archivo .env queda como hermano de esa carpeta, no dentro. Debes ajustar la ruta para salir un nivel antes de cargar el archivo [02:55]. Sin este ajuste, el sistema lanza un error indicando que la configuración no existe.

¿Cómo verificar que las variables de entorno funcionan sin usar OpenAI?

Si no tienes acceso a OpenAI por temas de tarjeta de crédito, puedes probar el componente con una variable de prueba [03:35]. Crea una variable simple en tu .env, por ejemplo MENSAJE=Hola, y léela desde tu código con $_ENV['MENSAJE'].

Al ejecutar el comando, si aparece Hola en consola, confirmas que el componente quedó instalado y configurado correctamente.

¿Cómo sé si phpdotenv está bien configurado? Crea una variable de prueba en .env, léela con $_ENV y ejecuta el script. Si el valor se imprime, la conexión funciona.

¿Qué ganas al centralizar la configuración con variables de entorno?

Tu API key deja de estar expuesta, tu información sensible vive en un solo lugar y tu proyecto queda listo para subirse a producción sin riesgos. Además, cualquier colaborador que clone el repositorio solo tiene que copiar el .env.example, renombrarlo a .env y reemplazar los valores.

El reto ahora es tuyo: instala el componente, configura tu archivo .env y haz que tu proyecto funcione leyendo las credenciales desde variables de entorno. ¿En qué parte del proceso te trabaste? Cuéntalo en los comentarios.