How to install Lighttpd and PHP 8 on Debian Bullseye
Lighttpd is a secure, fast, standards-compliant web server designed for speed-critical environments. This tutorial will show how we can install Lighttpd web server on an Debian Bullseye server with PHP 8 module through PHP-FPM. PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. In this tutorial we'll use PHP-FPM instead of Lighttpd's spawn-fcgi.
In this tutorial I use the hostname
kecoak with the IP address
10.10.10.228. You may have different settings, so you have to replace them where appropriate.
As usual, before proceed with actual installation, make sure that your system packages are up-to-date. Run the commands below to perform system package update and upgrade.
$ sudo apt update
$ sudo apt upgrade
Now we're ready to proceed with installation.
After the system is ready, we'll continue with Lighttpd installation:
$ sudo apt install lighttpd
When the installation process is done, open your web browser and go to
http://10.10.10.228/index.lighttpd.html (your IP might differs). You should see Lighttpd welcome page like below:
Lighttpd’s default document root is
/var/www/html on Debian, and the configuration file is
/etc/lighttpd/lighttpd.conf. Additional configurations are stored in files in the
/etc/lighttpd/conf-available directory – these configurations can be enabled with the
lighttpd-enable-mod command which creates a symlink from the
/etc/lighttpd/conf-enabled directory to the appropriate configuration file in
/etc/lighttpd/conf-available. You can disable configurations with the
PHP 8 Installation
Next, we'll continue with PHP 8 installation. Back to terminal, enter this command:
$ sudo apt install php8.0-fpm
PHP-FPM is a daemon process (with the init script
php8.0-fpm) that runs a FastCGI server on the socket
Lighttpd PHP-FPM configuration
To enable PHP8 in Lighttpd, we must modify
/etc/php/8.0/fpm/php.ini and uncomment the line
cgi.fix_pathinfo=1. In my
php.ini file, I found it on line
807. To uncomment, just remove the semicolon in the beginning.
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
Next, we need to adjust the file
/etc/lighttpd/conf-available/15-fastcgi-php-fpm.conf with correct value.
fastcgi.server += ( ".php" =>
"socket" => "/run/php/php8.0-fpm.sock",
"broken-scriptfilename" => "enable"
After finished editing, save the file and then enable it in Lighttpd.
$ cd /etc/lighttpd/conf-available/
$ sudo lighttpd-enable-mod fastcgi-php-fpm
We need to reload Lighttpd so it load our new configuration.
$ sudo service lighttpd force-reload
Let's verify our PHP installation using Lighttpd web server. Create a new file: /var/www/html/index.php
Save the file and then open this URL in web browser:
http://10.10.10.228/index.php. You should see something like this:
I hope that you now know how to install PHP 8 and Lighttpd Web Server on Debian Bullseye. If you run into any issues or have any feedback feel free to drop a comment below.