Skip to content

Repository files navigation

add-on registrytestslast commitrelease

DDEV FrankenPHP

See the blog Using FrankenPHP with DDEV.

Overview

FrankenPHP is a modern application server for PHP built on top of the Caddy web server.

This add-on integrates FrankenPHP into your DDEV project.

Note

FrankenPHP support is available for PHP 8.2+ ZTS (Zend Thread Safety) versions only.

Installation

ddev add-on get ddev/ddev-frankenphp
ddev restart

(Optional) To rebuild FrankenPHP without cache, use:

ddev utility rebuild

After installation, make sure to commit the .ddev directory to version control.

Usage

CommandDescription
ddev describeView project status
ddev php -vCheck installed PHP ZTS version
ddev exec frankenphp -vCheck installed FrankenPHP version
ddev php -mView installed PHP extensions
ddev logs -fView FrankenPHP logs

Advanced Customization

Install pre-packaged extensions using the php-zts- prefix (see supported extensions):

# install mongodb and sqlsrv extensions
ddev config --webimage-extra-packages="php-zts-mongodb,php-zts-sqlsrv"
ddev restart

For extensions not available as pre-packaged, use PHP/PIE, create a file .ddev/web-build/Dockerfile.frankenphp_extra with the following content:

# .ddev/web-build/Dockerfile.frankenphp_extra# Replace asgrim/example-pie-extension with the desired extension https://packagist.org/extensionsRUN (apt-get update || true) && \
DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" \
autoconf bison gcc libtool make pie-zts pkg-config re2c && \
rm -rf /var/lib/apt/lists/* && \
pie-zts install asgrim/example-pie-extension

And run ddev restart.

Make sure to commit the .ddev/web-build/Dockerfile.frankenphp_extra file to version control.


To change the default Caddyfile configuration, remove the #ddev-generated line from .ddev/web-build/Caddyfile.frankenphp and edit it.

Alternatively, create a file .ddev/docker-compose.frankenphp_extra.yaml with the following content:

# .ddev/docker-compose.frankenphp_extra.yaml# See all configurable variables in# https://github.com/php/frankenphp/blob/main/caddy/frankenphp/Caddyfileservices:
web:
environment:
# enable worker script# change some php.ini settingsFRANKENPHP_CONFIG: | worker ${DDEV_DOCROOT:-.}/index.php php_ini { memory_limit 256M max_execution_time 15 }# add a stub for Mercure moduleCADDY_SERVER_EXTRA_DIRECTIVES: | # mercure { # ... # }

And run ddev restart.

Make sure to commit the .ddev/docker-compose.frankenphp_extra.yaml file to version control.

Resources:

Credits

Contributed by @stasadev

Maintained by the DDEV team

About

FrankenPHP server (generic webserver) for PHP built on top of Caddy for DDEV

Topics

Resources

Code of conduct

Contributing

Stars

28 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Contributors

Languages