Part of my vacation time I like to spend learning and playing with tech. As I spend every waking moment of my professional day in the “frontend” space, I wanted to step back into the “backend” space and my roots of PHP and explore what’s new with PHP8 in particular. I have always been a huge fan of Symfony, so I wanted to start with the latest.
This documents my journey as a “noob” to a “Hello World!”
First, I wanted to install Ubuntu 20.04 LTS so I had a decent baseline. I live a double life as a PC gamer, so my main workstation is a Windows PC that now thankfully supports Windows Subsystem Linux; in my case WSL2.
Install Ubuntu 20.04
First, make sure you’re running WSL. Part of that includes selecting a distribution. If you’re in a situation like me where you’re running an older version (18.04 LTS in my case) and want to update to the latest, those steps are here:
sudo apt update sudo apt list --upgradable sudo apt upgrade sudo apt --purge autoremove sudo apt install update-manager-core sudo do-release-upgrade
You may see an error message “You have not rebooted after installing a package” — if you do, open PowerShell as an Administrator and run the following: Restart-Service LxssManager
When completed, you should be able to see the following after running within your instance:
wsl
cat /etc/os-release

Install PHP8 (Ubuntu)
Installing PHP8 takes mere moments within your linux instance. Simple run these commands, or download as a simple bash script:
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt install php8.0-common php8.0-cli -y sudo apt install php8.0-{bz2,curl,intl,mysql,readline,xml} sudo apt install php8.0-pcov # PCOV code coverage tool sudo apt install php8.0-xdebug # Xdebug debugger # for nginx #sudo apt install php8.0-fpm # for apache #sudo apt install libapache2-mod-php8.0 # purge old versions of PHP if applicable sudo apt purge '^php7.*'
One liner install:
wget https://gist.githubusercontent.com/litwicki/bb370bec4aed448966f5c5146316a497/raw/2b9c0f09ef1733654fc628a0df1822c6ac33cb5e/php8-ubuntu-install -O - -q | bash
Install Composer 2
https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md
#!/bin/sh EXPECTED_CHECKSUM="$(wget -q -O - https://composer.github.io/installer.sig)" php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] then >&2 echo 'ERROR: Invalid installer checksum' rm composer-setup.php exit 1 fi php composer-setup.php --quiet RESULT=$? rm composer-setup.php exit $RESULT
One liner install:
wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet
Install Composer globally:
chmod +x composer.phar
mv composer.phar /usr/bin/composer
Setup Symfony app
I am an avid fan of Symfony as a framework because of its flexibility and dedication to performance and extensibility.
First, install the symfony
CLI:
wget https://get.symfony.com/cli/installer -O - | bash
Next, create your naked Symfony app:
symfony new my-app
symfony server:ca:install
Enjoy!
symfony serve
