Remember when people used to joke that PHP was dying? Well, in 2025, PHP is not only alive and kicking but thriving thanks to its Frankenstein-inspired application server that’s been taking the web development world by storm!
What Is This Monster?
FrankenPHP is the brainchild of Kévin Dunglas (the same genius behind API Platform) who first unleashed this creation in October 2022. It’s a PHP application server built on top of the Caddy web server and written in Go.
Think of it as the cool science experiment that combined the best parts of different technologies to create something even more powerful than the sum of its parts.
Unlike the monster from Mary Shelley’s novel, this creation is extremely friendly and incredibly helpful!
Why Developers Are Obsessed With It in 2025
Three years after its major 1.3 release (which delivered a whopping 54% performance boost), FrankenPHP has become the go-to solution for PHP developers who want speed, reliability, and modern features.
The server landscape in 2025 has drastically changed. What used to be a complicated dance of Nginx/Apache configurations, PHP-FPM setups, and various proxy layers has been simplified to “just use FrankenPHP” in many PHP shops.
“I literally deleted 200 lines of server config and replaced it with 10 lines of FrankenPHP config,” says one happy developer on Reddit’s r/PHP. “It’s like I finally got my weekends back!”
The Secret Sauce: What Makes It Special
FrankenPHP’s popularity in 2025 comes down to a few key ingredients:
- Worker Mode: Applications run lightning-fast because code stays loaded in memory
- Real-time Capabilities: Built-in Mercure hub for instant updates (no more polling!)
- Developer Experience: The file watcher feature means you can edit code and just refresh your browser
- Modern By Default: Automatic HTTPS, HTTP/2, and HTTP/3 support without painful configuration
- Container-Friendly: The deployment darling for DevOps teams everywhere
One feature that’s been a game-changer in 2025: the advanced metrics integration that’s made it super easy for teams to monitor and optimize their applications. Operations teams are particularly fond of the granular control over thread and worker management.
The Community Effect
The API Platform Conference 2025 happening September 18-19 in Lille, France has an entire track dedicated to FrankenPHP—no surprise considering how popular it’s become. The conference brings together FrankenPHP creators, contributors, and enthusiastic users sharing their success stories.
What’s fascinating is how FrankenPHP has bridged communities: PHP devs learning Go basics to contribute, and Go developers dipping their toes into PHP waters to enhance the server. It’s created this weird but wonderful cross-pollination that’s energized both communities.
Real Talk: Is It Perfect?
Of course not! But that’s part of its charm. The FrankenPHP Discord server has this legendary channel called #franken-fails where developers share their most spectacular configuration disasters—often followed by the simple fix that made everything work.
“I somehow managed to crash my entire cluster with one typo,” shared one developer at a recent meetup. “But the error message was so clear I had it fixed before my boss noticed!”
What’s Next?
Rumor has it that the FrankenPHP team is working on even deeper integration with major frameworks and improved observability features. There’s also talk of experimental machine learning capabilities to automatically optimize server settings based on your application’s patterns.
While we wait for the next big update, developers continue finding creative ways to use this “monster” server. From ultra-lightweight microservices to mammoth enterprise applications, FrankenPHP has proven itself versatile enough to handle just about anything thrown at it.
The Bottom Line
In 2025, if you’re still running PHP without FrankenPHP, your colleagues are probably wondering why. It’s become as standard to PHP development as composer and curly braces.
As one conference speaker recently put it: “FrankenPHP didn’t just improve PHP deployment—it brought the fun back to server management.” And in the sometimes tedious world of server configuration, that might be its greatest achievement yet!
Links & Resources
Official Resources
- Main Website: frankenphp.dev
- Documentation: frankenphp.dev/docs
- GitHub Repository: github.com/dunglas/frankenphp
- GitHub Discussions (official community forum): github.com/dunglas/frankenphp/discussions
- PHP UK Conference – Youtube Presentation
Community Resources
- No Official Discord: The maintainers explicitly prefer GitHub Discussions over Discord for better searchability and organization (confirmed in GitHub issue #823)
- GitHub Issues: github.com/dunglas/frankenphp/issues
- API Platform Conference: Annual event with FrankenPHP creators and contributors (Next: Sep 18-19, 2025 in Lille, France)
Creator Information
- Kévin Dunglas: Creator of FrankenPHP, Symfony Core Team member
- Twitter/X: @dunglas
- Mastodon: @dunglas@mastodon.social
- GitHub: github.com/dunglas
- Website: dunglas.dev
Bonus: Installing FrankenPHP and WordPress on Linux / WSL2
Hey there, WordPress enthusiasts! Are you tired of sluggish WordPress performance for local development?
In this guide, I’ll walk you through setting up WordPress with FrankenPHP – it’s easier than you might think!
This works perfectly on Windows WSL2 as well, a lot faster than most packaged solutions out there and will beat Docker on lower powered systems easily .
Looking for a Docker Solution ? Check out FrankeWP.
1. Getting Your System Ready
Let’s start with the basics! First, we need to update your system (because who likes working with outdated packages, right?):
Got Debian? Run this:
1 2 3 |
sudo apt update && sudo apt upgrade -y |
Now, let’s grab some essential tools we’ll need for this project:
1 2 3 |
sudo apt install -y curl unzip git |
2. Getting FrankenPHP Up and Running
Now comes the exciting part – installing FrankenPHP! Just copy-paste these commands and you’ll be all set:
1 2 3 4 |
curl https://frankenphp.dev/install.sh | sh mv frankenphp /usr/local/bin/ |
Let’s make sure it worked (fingers crossed):
1 2 3 |
frankenphp -v |
3. Getting WordPress Ready
Time to grab WordPress! Let’s download and unpack it:
1 2 3 4 5 6 |
curl -O https://wordpress.org/latest.zip unzip latest.zip mv wordpress /var/www/wordpress cd /var/www/wordpress |
Now we need to set some permissions (boring but necessary stuff):
1 2 3 4 |
sudo chown -R www-data:www-data /var/www/wordpress sudo chmod -R 755 /var/www/wordpress |
4. Lets go FrankenPHP
1 2 3 |
frankenphp php-server --listen :9000 /var/www/wordpress |
Boom! Your WordPress is now running on port 8080. Open your browser and go to http://server-ip:8080 to see the magic happening!
5. Setting Up the Database
WordPress needs a database to store all your awesome content. Let’s set up MariaDB:
1 2 3 |
sudo apt-get install mariadb -y |
Let’s start MariaDB and make sure it runs at startup (because who wants to manually start it every time, right?):
1 2 3 |
sudo systemctl enable --now mariadb |
Time to create a database for WordPress! Log in to MySQL (you’ll need to enter your password):
1 2 3 |
sudo mysql -u root -p |
Once you’re in, run these SQL commands (make sure to change that ‘strongpassword’ to something actually strong!):
1 2 3 4 5 6 7 |
CREATE DATABASE wordpress; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'strongpassword'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; EXIT; |
6. Wrapping Up the WordPress Setup
Almost done! Fire up your browser and go to http://server-ip:8080. You’ll see the famous WordPress setup wizard. Just enter the database details we created earlier, and you’re good to go!
Start on Boot
1 2 3 |
sudo nano /etc/systemd/system/frankenphp.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=FrankenPHP service After=network.target StartLimitIntervalSec=0 [Service] Type=simple Restart=always RestartSec=1 User=YOURUSER WorkingDirectory=/home/YOURUSER ExecStart=frankenphp php-server --listen :9000 /var/www/wordpress [Install] WantedBy=multi-user.target |
Start Service
1 2 3 |
systemctl start frankenphp |
Check Status
1 2 3 |
systemctl status frankenphp |
Autostart
1 2 3 |
systemctl enable frankenphp |
PHP Tweaks
Create a php.ini in /lib
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
memory_limit = 256M max_execution_time = 120 display_errors = Off zend_extension=opcache opcache.enable=1 upload_max_filesize = 64M zlib.output_compression = On zlib.output_compression_level = 5 realpath_cache_size = 16M realpath_cache_ttl = 120 session.save_handler = files session.save_path = /var/lib/php/sessions session.cache_limiter = public session.cache_expire = 180 |
That’s It – You’re Done!
Congrats! You’ve just set up WordPress using FrankenPHP, which means your site should be faster and more efficient than a regular WordPress installation. Pretty cool, right?
I hope this guide helped you get your super-fast WordPress site up and running! Now go create some awesome content and enjoy those faster load times. Your visitors (and Google) will thank you!