PHP en servidores sin servidor: AWS Lambda para desarrolladores web

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

PHP y Serverless: una alianza inesperada

\n\n

Cuando escuchamos «Serverless» (o «computación sin servidor»), la primera asociación es JavaScript, Python o Go. PHP en este contexto parece un «dinosaurio» atrapado en la era de los alojamientos compartidos y los WordPress monolíticos. Pero seamos realistas: PHP está vivo, sano y es más flexible de lo que piensas.

\n\n

Hoy analizaremos cómo ejecutar código PHP en AWS Lambda y sus alternativas. Descubrirás por qué PHP serverless no es magia, sino una herramienta funcional para APIs, manejadores de webhooks y microservicios. Spoiler: no tendrás que renunciar a tu lenguaje favorito.

\n\n

¿Qué es realmente Serverless?

\n\n

Despejemos el mito de inmediato. «Serverless» no significa «sin servidor». Significa que no piensas en el servidor. La plataforma (AWS, Google Cloud, Vercel) gestiona la infraestructura por ti: escala, actualiza, repara. Tú solo subes el código y pagas por el tiempo de ejecución.

\n\n

Para PHP, esto suena a desafío. PHP tradicionalmente requiere un servidor web (Apache, Nginx) y el módulo PHP-FPM. Pero la tecnología no se detiene.

\n\n

¿Cómo funciona PHP en un entorno sin servidor?

\n\n

El problema clave: las funciones Lambda (y sus equivalentes) son contenedores stateless que viven unos segundos o minutos. No «mantienen» una sesión en memoria, no ejecutan Apache. Por lo tanto, un script PHP estándar que espera $_GET o escribe en $_SESSION debe adaptarse.

\n\n

La solución llegó en forma de runtimes especiales. Convierten un evento Lambda (por ejemplo, una solicitud HTTP de API Gateway) en un contexto PHP familiar. La herramienta más popular para esto es Bref.

\n\n

Bref: el motor PHP para AWS Lambda

\n\n

Bref es un proyecto de código abierto que permite ejecutar PHP en AWS Lambda «listo para usar». Viene con capas (layers) preconstruidas que incluyen PHP 8.x y extensiones populares (PDO, Redis, gd, mbstring).

\n\n

Instalación y primer lanzamiento

\n\n

Para trabajar necesitarás:

\n
    \n
  • Una cuenta de AWS
  • \n
  • composer y aws-cli instalados
  • \n
  • Node.js (para Serverless Framework)
  • \n
\n\n

Creemos una función simple que devuelva un JSON con la hora actual:

\n\n
// index.php\n<?php\nrequire __DIR__ . '/vendor/autoload.php';\n\nuse Bref\\Context\\Context;\nuse Bref\\Event\\Http\\HttpHandler;\n\nclass TimeHandler extends HttpHandler\n{\n    public function handleRequest($request, Context $context): array\n    {\n        return [\n            'statusCode' => 200,\n            'headers' => ['Content-Type' => 'application/json'],\n            'body' => json_encode([\n                'server_time' => date('Y-m-d H:i:s'),\n                'php_version' => PHP_VERSION,\n                'message' => 'Hello from Serverless PHP!'\n            ]),\n        ];\n    }\n}\n\nreturn new TimeHandler();
\n\n

Ahora configuremos el despliegue. Crea un archivo serverless.yml:

\n\n
# serverless.yml\nservice: php-time-api\n\nprovider:\n    name: aws\n    region: eu-central-1\n    runtime: provided.al2\n\nplugins:\n    - ./vendor/bref/bref\n\nfunctions:\n    api:\n        handler: index.php\n        timeout: 28\n        layers:\n            - ${bref:layer.php-81}\n        events:\n            - httpApi: 'GET /time'
\n\n

Ejecuta el despliegue:

\n
composer require bref/bref\nserverless deploy
\n\n

En un minuto obtendrás una URL como: https://xxx.execute-api.eu-central-1.amazonaws.com/time. Ábrela en tu navegador y verás el JSON. Felicidades, ¡acabas de ejecutar una función PHP serverless en AWS Lambda!

\n\n

Alternativas a AWS Lambda para PHP

\n\n

¿No quieres atarte a AWS? Hay alternativas que también son compatibles con PHP.

\n\n

Google Cloud Functions (con adaptación)

\n\n

Google no admite PHP de forma nativa, pero puedes

Blogs

Book Recommendations