So have installed PHP8.1 from ondrej PPA
sudo add-apt-repository ppa:ondrej/php
Install PHP8.1
sudo apt install php8.1-fpm
sudo apt install php8.1
sudo apt install php8.1-intl
sudo apt install php8.1-mbstring
sudo apt install php8.1-mysql
sudo apt install php8.1-xml
sudo apt install php8.1-zip
sudo apt install php8.1-opcache
sudo apt install php8.1-curl
sudo apt install php8.1-mailparse
sudo apt install php8.1-imagick
# or for greater brevity with bash shell
sudo apt install php8.1-{fpm,intl,mbstring,curl,mailparse,imagick,zip,xml,mysql}
The first thing I found is that /etc/php/8.1/fpm/php-fpm.conf
is missing when I try to start the php8.1-fpm.service
# copy it from 8.0 and edit
cp /etc/php/8.0/fpm/php-fpm.conf /etc/php/8.1/fpm/php-fpm.conf
# find and replace all instances of 8.0 with 8.1 then
systemctl enable php8.1-fpm.service
systemctl start php8.1-fpm.service
The next challenge is when trying to enable the needed extensions. I get these errors
phpenmod -v 8.1 intl
WARNING: Module intl ini file doesn't exist under /etc/php/8.1/mods-available
WARNING: Module intl ini file doesn't exist under /etc/php/8.1/mods-available
The fix is copying the ini
files to the mods-available directory to make them available to php8.1-fpm
Find and enable the PHP extensions you need
WordPress docs has a list of recommended extensions => https://make.wordpress.org/hosting/handbook/server-environment/
cp /usr/share/php8.1-mysql/mysql/*.ini /etc/php/8.1/mods-available
phpenmod -v 8.1 mysqli
phpenmod -v 8.1 mysqlnd
phpenmod -v 8.1 pdo_mysql
cp /usr/share/php8.1-opcache/opcache/opcache.ini /etc/php/8.1/mods-available/
phpenmod -v 8.1 opcache
cp /usr/share/php8.1-common/common/* /etc/php/8.1/mods-available/
phpenmod -v 8.1 ctype
# repeat for all your needed modules & restart
systemctl restart php8.1-fpm.service
To find out what is missing browse your WordPress site and trigger errors. You might see error screens like the following:
![](https://toggen.com.au/wp-content/uploads/2022/02/image-19.png)
The emails sent to your site admin email address will contain hints as to what’s missing. The following says I’m missing the ctype
extension
![](https://toggen.com.au/wp-content/uploads/2022/02/image-18.png)
To see the PHP extensions you have enabled
ls -1 /etc/php/8.1/fpm/conf.d/
10-mysqlnd.ini
10-opcache.ini
20-ctype.ini
20-curl.ini
20-gd.ini
20-imagick.ini
20-intl.ini
20-mbstring.ini
20-mysqli.ini
20-pdo_mysql.ini
20-soap.ini
20-tidy.ini
20-zip.ini
0 Comments