PHP auf Servern ohne Server: AWS Lambda für Webentwickler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

PHP und Serverless: Eine unerwartete Allianz

\n\n

Wenn wir „Serverless“ (oder „serverloses Computing“) hören, denken wir zuerst an JavaScript, Python oder Go. PHP wirkt in diesem Kontext wie ein „Dinosaurier“, der im Zeitalter von Shared Hosting und monolithischen WordPress-Seiten feststeckt. Aber sehen wir der Wahrheit ins Auge: PHP lebt, ist gesund und flexibler, als Sie denken.

\n\n

Heute schauen wir uns an, wie man PHP-Code in AWS Lambda und seinen Alternativen ausführt. Sie werden erfahren, warum Serverless PHP keine Magie ist, sondern ein praktisches Werkzeug für APIs, Webhook-Handler und Microservices. Spoiler: Sie müssen Ihre Lieblingssprache nicht aufgeben.

\n\n

Was ist Serverless eigentlich?

\n\n

Räumen wir gleich mit einem Mythos auf. „Serverless“ bedeutet nicht „ohne Server“. Es bedeutet, dass Sie sich nicht um den Server kümmern müssen. Die Plattform (AWS, Google Cloud, Vercel) verwaltet die Infrastruktur selbst: Sie skaliert, aktualisiert und repariert. Sie laden einfach Ihren Code hoch und zahlen für die Ausführungszeit.

\n\n

Für PHP klingt das nach einer Herausforderung. Denn PHP benötigt traditionell einen Webserver (Apache, Nginx) und das PHP-FPM-Modul. Aber die Technologie steht nicht still.

\n\n

Wie funktioniert PHP in einer serverlosen Umgebung?

\n\n

Das Hauptproblem: Lambda-Funktionen (und ihre Alternativen) sind zustandslose Container, die nur wenige Sekunden oder Minuten leben. Sie „halten“ keine Session im Speicher und betreiben keinen Apache. Daher muss ein standardmäßiges PHP-Skript, das auf $_GET wartet oder in $_SESSION schreibt, angepasst werden.

\n\n

Die Lösung kam in Form von speziellen Runtimes. Sie wandeln ein Lambda-Ereignis (z. B. eine HTTP-Anfrage von API Gateway) in einen vertrauten PHP-Kontext um. Das beliebteste Werkzeug dafür ist Bref.

\n\n

Bref: PHP-Engine für AWS Lambda

\n\n

Bref ist ein Open-Source-Projekt, das es ermöglicht, PHP „out of the box“ auf AWS Lambda auszuführen. Es wird mit vorgefertigten Layern geliefert, die PHP 8.x und gängige Erweiterungen (PDO, Redis, gd, mbstring) enthalten.

\n\n

Installation und erster Start

\n\n

Für die Arbeit benötigen Sie:

\n
    \n
  • Ein AWS-Konto
  • \n
  • Installiertes composer und aws-cli
  • \n
  • Node.js (für das Serverless Framework)
  • \n
\n\n

Erstellen wir eine einfache Funktion, die ein JSON mit der aktuellen Uhrzeit zurückgibt:

\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

Jetzt konfigurieren wir das Deployment. Erstellen Sie eine Datei 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

Starten Sie das Deployment:

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

Nach einer Minute erhalten Sie eine URL wie: https://xxx.execute-api.eu-central-1.amazonaws.com/time. Öffnen Sie sie im Browser – Sie sehen ein JSON. Herzlichen Glückwunsch, Sie haben soeben eine Serverless PHP-Funktion auf AWS Lambda ausgeführt!

\n\n

Alternativen zu AWS Lambda für PHP

\n\n

Sie möchten sich nicht an AWS binden? Es gibt Alternativen, die ebenfalls mit PHP kompatibel sind.

\n\n

Google Cloud Functions (mit Anpassung)

\n\n

Google unterstützt PHP nicht nativ, aber Sie können

Blogs

Buchempfehlungen