Mengintegrasikan FrankenPHP dengan ekosistem web populer: menjalankan WordPress dengan mode worker dan konfigurasi produksi, deployment Drupal, serta API Platform (Symfony) yang memakai FrankenPHP sebagai runtime utama dengan dukungan worker native.

Setelah 21 episode membangun dari nol, episode ini menghubungkan FrankenPHP dengan ekosistem yang sudah ada — aplikasi yang tidak kalian tulis sendiri tapi harus berjalan di atas FrankenPHP. Tiga nama terbesar di dunia PHP: WordPress, Drupal, dan API Platform (Symfony). Masing-masing punya jalur integrasi yang sudah dipikirkan serius oleh tim FrankenPHP.
Mengapa penting? Jujur saja: mayoritas traffic PHP di dunia tetap WordPress dan Drupal. Jika kalian bisa menjalankan keduanya dengan mode worker FrankenPHP — plus memiliki alur produksi resmi — maka FrankenPHP bukan sekadar teknologi baru, tapi pengganti nyata untuk tumpukan LAMP/LNMP yang menguasai produksi.
WordPress adalah target integrasi utama FrankenPHP — Kévin Dunglas sendiri memakai FrankenPHP untuk blog-nya. WordPress mendukung mode worker resmi sejak FrankenPHP v1 (dan bahkan lebih awal, via FrankenPHP Worker dan preload).
Persyaratan untuk mode worker di WordPress:
php_server (classic) untuk pemasangan sederhana, atau worker untuk performa ekstrem.enable_post_data_reading dari episode 13).zlib (kompresi) terpasang.Konfigurasi Caddyfile produksi yang direkomendasikan:
{
frankenphp {
worker /app/wp/public/index.php 2
}
}
kaliansite.com {
root * /app/wp/public
encode zstd br gzip
php_server {
try_files {path} {path}/ /index.php?{query}
}
header {
-X-Powered-By
}
}Poin penting:
try_files untuk permalink WordPress (pretty URLs) — pattern ini sama dengan Nginx config WordPress standar.encode zstd br gzip — kompresi aset; precompressed opsional bila file .gz/.zst sudah disiapkan.2 di contoh) sesuaikan memory (episode 17).Warning
Beberapa plugin WordPress memakai fungsi yang mengasumsikan PHP-FPM (misal session, pcntl, atau mekanisme shutdown). Saat menguji di worker mode, perhatikan error log plugin — masalah hampir selalu pada plugin, bukan FrankenPHP. Uji plugin kritis di staging dulu.
Laravel juga bisa menjadi backend WordPress — pola headless: WordPress sebagai CMS, Laravel+Octane+FrankenPHP sebagai frontend/API. Alur ini memakai kekuatan masing-masing: editor WordPress yang matang, runtime Laravel yang cepat. Konfigurasi tetap mengikuti episode 6 (Octane).
Drupal adalah CMS enterprise yang solid. FrankenPHP menawarkan dunglas/frankenphp-drupal — kit integrasi yang menyiapkan Docker, image, dan workflow yang disesuaikan dengan Drupal.
Konsep dasar:
FRANKENPHP_DOCKER variable untuk mengontrol mode (classic/worker).docker-compose lengkap dengan database, Redis, dan tooling Drupal.git clone https://github.com/dunglas/frankenphp-drupal.git
cd frankenphp-drupal
docker compose up -dDrupal di worker mode mendapat benefit yang sama: bootstrap sekali, request berikutnya langsung. Kebutuhan session/cache yang kompleks di Drupal ditangani oleh Redis (episode 13) — Drupal mendukung redis module secara native.
API Platform (framework API berbasis Symfony) adalah proyek yang paling erat dengan FrankenPHP — dikembangkan oleh tim yang sama. Dukungan worker-nya native: mulai API Platform 3.2, bila dijalankan di FrankenPHP dengan mode worker, semua API controller berjalan di worker mode tanpa konfigurasi tambahan.
Cara mengaktifkan:
composer require runtime/frankenphp-symfony)..env:
APP_RUNTIME=Runtime\FrankenPhpSymfony\Runtime{
frankenphp {
worker /app/public/index.php 4
}
}Karena API Platform = Symfony + Mercure + OpenAPI, ia langsung terintegrasi dengan semua yang episode 7 dan 18 ajarkan:
Contoh controller dengan Early Hints:
use Symfony\Component\HttpFoundation\Response;
public function __invoke(): Response
{
if (function_exists('frankenphp_early_hints')) {
frankenphp_early_hints([
'Link: </assets/app.css>; rel=preload; as=style',
]);
}
return $this->render('page/index.html.twig');
}| Platform | Jalur utama | Mode worker | Dukungan resmi |
|---|---|---|---|
| WordPress | php_server + try_files | Ya (worker resmi) | Ya |
| Drupal | dunglas/frankenphp-drupal | Ya (via Docker) | Ya (starter kit) |
| API Platform | Runtime bawaan (3.2+) | Ya (native) | Ya (tim yang sama) |
| Laravel | Octane (episode 6) | Ya | Ya |
| Symfony | Runtime (episode 7) | Ya | Ya |
Kelima stack populer PHP punya jalur pertama yang didukung secara resmi — ini berbeda dari app server lain yang mengharuskan kalian meretas sendiri.
$_SERVER['SERVER_SOFTWARE'] atau memakai fungsi worker-hostile. Periksa log.try_files yang benar, URL cantik WordPress 404. Pola di atas adalah minimum yang wajib.APP_RUNTIME diset atau naikkan ke Symfony 7.4+ yang native.Pada episode 22 ini, kalian telah mengintegrasikan FrankenPHP dengan ekosistem besar PHP.
Inti yang harus dibawa pulang:
php_server + try_files + encode; mode worker resmi.dunglas/frankenphp-drupal.frankenphp_early_hints().Di episode 23 selanjutnya kita melihat peta besar: ekosistem & tren 2026 — posisi FrankenPHP vs RoadRunner, Swoole, OpenSwoole; dukungan framework; dan arah Caddy 2.11.x sebagai fondasi. Sampai jumpa di episode 23!