From abaf03c7f79ea2721ba2e298de61121c4471e31b Mon Sep 17 00:00:00 2001 From: Marc Date: Wed, 26 Nov 2025 14:19:27 +0700 Subject: [PATCH] deduplicate installation instructions in README(#2013) --- README.md | 49 ++++++++++++++++++++++++++++--------------------- docs/compile.md | 7 ++++++- install.sh | 23 +++++++++++++++++------ 3 files changed, 51 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 7f4ebbe2..d8835c15 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ install an appropriate version for your platform: ```console curl https://frankenphp.dev/install.sh | sh -mv frankenphp /usr/local/bin/ ``` ### Standalone Binary @@ -35,6 +34,8 @@ containing [PHP 8.4](https://www.php.net/releases/8.4/en.php) and most popular P [Download FrankenPHP](https://github.com/php/frankenphp/releases) +**Installing extensions:** Most common extensions are bundled. It's not possible to install more extensions. + ### rpm Packages Our maintainers offer rpm packages for all systems using `dnf`. To install, run: @@ -43,9 +44,13 @@ Our maintainers offer rpm packages for all systems using `dnf`. To install, run: sudo dnf install https://rpm.henderkes.com/static-php-1-0.noarch.rpm sudo dnf module enable php-zts:static-8.4 # 8.2-8.5 available sudo dnf install frankenphp -# to install extensions: -sudo dnf install php-zts-xdebug -# if an extension is not available by default, install it with pie +``` + +**Installing extensions:** `sudo dnf install php-zts-` + +For extensions not available by default, use [PIE](https://github.com/php/pie): + +```console sudo dnf install php-zts-devel sudo pie install asgrim/example-pie-extension --with-php-config=php-config-zts ``` @@ -59,13 +64,27 @@ sudo curl -fsSL https://key.henderkes.com/static-php.gpg -o /usr/share/keyrings/ echo "deb [signed-by=/usr/share/keyrings/static-php.gpg] https://deb.henderkes.com/ stable main" | sudo tee /etc/apt/sources.list.d/static-php.list && \ sudo apt update sudo apt install frankenphp -# to install extensions: -sudo apt install php-zts-xdebug -# if an extension is not available by default, install it with pie +``` + +**Installing extensions:** `sudo apt install php-zts-` + +For extensions not available by default, use [PIE](https://github.com/php/pie): + +```console sudo apt install php-zts-devel sudo pie install asgrim/example-pie-extension --with-php-config=php-config-zts ``` +### Homebrew + +FrankenPHP is also available as a [Homebrew](https://brew.sh) package for macOS and Linux. + +```console +brew install dunglas/frankenphp/frankenphp +``` + +**Installing extensions:** Use [PIE](https://github.com/php/pie). + ### Usage To serve the content of the current directory, run: @@ -80,24 +99,12 @@ You can also run command-line scripts with: frankenphp php-cli /path/to/your/script.php ``` -### Homebrew - -FrankenPHP is also available as a [Homebrew](https://brew.sh) package for macOS and Linux. - -To install it: +For the deb and rpm packages, you can also start the systemd service: ```console -brew install dunglas/frankenphp/frankenphp +sudo systemctl start frankenphp ``` -To serve the content of the current directory, run: - -```console -frankenphp php-server -``` - -If you need extensions, you will have to install them with [pie](https://github.com/php/pie). - ### Docker Alternatively, [Docker images](https://frankenphp.dev/docs/docker/) are available: diff --git a/docs/compile.md b/docs/compile.md index 42a9fdad..caae7001 100644 --- a/docs/compile.md +++ b/docs/compile.md @@ -103,8 +103,13 @@ xcaddy build \ --output frankenphp \ --with github.com/dunglas/frankenphp/caddy \ --with github.com/dunglas/mercure/caddy \ - --with github.com/dunglas/vulcain/caddy + --with github.com/dunglas/vulcain/caddy \ + --with github.com/dunglas/caddy-cbrotli # Add extra Caddy modules and FrankenPHP extensions here + # optionally, if you would like to compile from your frankenphp sources: + # --with github.com/dunglas/frankenphp=$(pwd) \ + # --with github.com/dunglas/frankenphp/caddy=$(pwd)/caddy + ``` > [!TIP] diff --git a/install.sh b/install.sh index d50defd8..eea9fe22 100755 --- a/install.sh +++ b/install.sh @@ -42,7 +42,9 @@ Linux*) ${SUDO} dnf -y module enable php-zts:static-8.4 || true ${SUDO} dnf -y install frankenphp echo - echo "🥳 FrankenPHP installed successfully" + echo "🥳 FrankenPHP installed to ${italic}/usr/bin/frankenphp${normal} successfully." + echo "❗ The systemd service uses the Caddyfile in ${italic}/etc/frankenphp/Caddyfile${normal}" + echo "❗ Your php.ini is found in ${italic}/etc/php-zts/php.ini${normal}" echo echo "⭐ If you like FrankenPHP, please give it a star on GitHub: ${italic}https://github.com/php/frankenphp${normal}" exit 0 @@ -64,7 +66,9 @@ Linux*) ${SUDO} apt-get -y install frankenphp fi echo - echo "🥳 FrankenPHP installed successfully." + echo "🥳 FrankenPHP installed to ${italic}/usr/bin/frankenphp${normal} successfully." + echo "❗ The systemd service uses the Caddyfile in ${italic}/etc/frankenphp/Caddyfile${normal}" + echo "❗ Your php.ini is found in ${italic}/etc/php-zts/php.ini${normal}" echo echo "⭐ If you like FrankenPHP, please give it a star on GitHub: ${italic}https://github.com/php/frankenphp${normal}" exit 0 @@ -131,13 +135,20 @@ ${SUDO} chmod +x "${DEST}" if command -v setcap >/dev/null 2>&1; then ${SUDO} setcap 'cap_net_bind_service=+ep' "${DEST}" || true else - echo "❗ install setcap (e.g. libcap2-bin) to allow FrankenPHP to bind to ports 80/443 without root:" - echo " sudo setcap 'cap_net_bind_service=+ep' \"${DEST}\"" + echo "❗ install setcap (e.g. libcap2-bin) to allow FrankenPHP to bind to ports 80/443 without root:" + echo " ${bold}sudo setcap 'cap_net_bind_service=+ep' \"${DEST}\"${normal}" fi echo echo "🥳 FrankenPHP downloaded successfully to ${italic}${DEST}${normal}" -echo "🔧 Move the binary to ${italic}/usr/local/bin/${normal} or another directory in your ${italic}PATH${normal} to use it globally:" -echo " ${bold}sudo mv ${DEST} /usr/local/bin/${normal}" +echo "❗ It uses ${italic}/etc/frankenphp/php.ini${normal} if found." +case ":$PATH:" in +*":$DEST:"*) ;; +*) + echo "🔧 Move the binary to ${italic}/usr/local/bin/${normal} or another directory in your ${italic}PATH${normal} to use it globally:" + echo " ${bold}sudo mv ${DEST} /usr/local/bin/${normal}" + ;; +esac + echo echo "⭐ If you like FrankenPHP, please give it a star on GitHub: ${italic}https://github.com/php/frankenphp${normal}"