Compile PHP8 on Windows WSL2 Ubuntu

To be able to test PHP 8 and get an impression of how big the changes are going to be, I wanted to run PHP8 on my local system with most of the default extensions in place.

If you want to know more about my local development setup, have a look at https://susi.dev/dev-env-2020

Here's a short guide on how to compile PHP8 on a Windows 10 machine using Ubuntu 20.20 in WSL2:

Install Pre-Requisites

First we need to install the requirements for building PHP and some extensions:

 sudo apt-get install build-essential \
    autoconf \
    libtool \
    bison \
    re2c \
    libxml2-dev \
    libonig-dev \
    libssl-dev \
    libargon2-0-dev \
    libsodium-dev \
    libcurl4-openssl-dev \
    libreadline-dev \
    libyaml-dev \
    libgmp-dev
    libxml2-dev \
    libcurl4-openssl-dev \
    libjpeg-dev \
    libpng-dev \
    libwebp-dev \
    libxpm-dev \
    libmysqlclient-dev \
    libpq-dev \
    libicu-dev \
    libfreetype6-dev \
    libldap2-dev \
    libxslt-dev \
    libssl-dev \
    libldb-dev

Link Ldap library

The configure command didn't find the ldap libraries out of the box, so I manually linked them via:

sudo ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so && sudo ln -s /usr/lib/x86_64-linux-gnu/liblber.so /usr/lib/liblber.so

Download PHP 8

Download the latest PHP 8 release from php.net and extract it (PHP 8.0 beta1 at the time of writing).

wget www.php.net/distributions/php-8.0.3.tar.gz
tar -xzf php-8.0.3.tar.gz
cd php-8.0.3

Configure PHP

The following command configures the build with a few extensions useful for PHP web applications (like ldap or openssl):

./configure --prefix=/usr/local/php --enable-bcmath \
--enable-calendar --enable-opcache --enable-mbstring \
--enable-intl --enable-mysqlnd --with-mysqli --with-pgsql \
--with-ldap --with-xsl --with-readline --with-zlib \
--with-curl --with-openssl --with-password-argon2 --with-sodium \
--with-gmp --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zip \
--enable-gd --with-jpeg --with-webp

Run make and install

Now run make and make install to install PHP:

make
make test
sudo make install

Have fun!
PHP 8 is now installed at: /usr/local/php/bin/