Introduction
This guide will show you how to migrate from PHP 7.x to PHP 8 on an Apache web server. Check the migration guide for new features and incompatible changes.
Prerequisites
- A fully-updated Ubuntu Linux 20.04 server, running Apache.
Before proceeding, it is recommended to make a backup of your server. Then, test the backup by deploying a new instance from the backup, then verify that the test instance boots and has the correct data. If you do not make a backup before proceeding, you risk losing your data.
1. List Installed PHP Modules
Before upgrading PHP, find all the PHP 7.x modules currently installed on the server. These will need to be upgraded along with PHP core to their respective 8 versions.
Take note of the version number of the current PHP installation; this will be needed later.
$ dpkg -l | grep php
Output:
php-common install
php7.x-cli install
php7.x-curl install
[...]
2. Install PHP 8
Ubuntu may not yet have PHP version 8 in its official repositories, and you can install PHP 8 from the ondrej/php
repository, a long-time and community-trusted repository for Ubuntu PHP packages.
Add the necessary repository.
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
Install PHP 8.
$ sudo apt install php8.0
3. Install Modules
Install related PHP modules; below are some of the most frequently used. Please refer back to step 1 and manually install any modules necessary that are missing, replacing 7.x
with 8.0
.
$ sudo apt install php8.0-common php8.0-fpm php8.0-mysql php8.0-gmp php8.0-xml php8.0-xmlrpc php8.0-curl php8.0-mbstring php8.0-gd php8.0-dev php8.0-imap php8.0-opcache php8.0-readline php8.0-soap php8.0-zip php8.0-intl php8.0-cli libapache2-mod-php8.0
Once complete, restart PHP
$ sudo systemctl restart php8.0-fpm.service
Verify PHP has been installed correctly.
$ php -v
3. Enable PHP 8 in Apache
The a2enmod
and a2dismod
scripts can be used for enabling and disabling PHP versions in Apache.
Disable the previous PHP version installed. Replace
7.x
with the version number noted in step 1.$ sudo a2dismod php7.x
Enable PHP 8.
$ sudo a2enmod php8.0
Restart the Apache web server.
$ sudo systemctl restart apache2.service
4. Verify Apache is Using PHP 8
Navigate to the document root of a website on the server. For this example the document root is
/var/www/html
.$ cd /var/www/html
Create a PHP file.
$ sudo nano phpinfo.php
Add the following content to the file.
<?php phpinfo(); ?>
Open a browser and access the file at
http://[ip-address]/phpinfo.php
orhttp://[domain]/phpinfo.php
and verify it displays the correct PHP version.
Remember to remove
phpinfo.php
when finished to prevent exposing sensitive information about your server.
Conclusion
You have now successfully migrated from PHP 7.x to PHP 8 on your Apache web server.