Gnupg extension error after PHP upgrade

I have followed the steps in this tutorial to upgrade PHP 7.4 to 8.3. I have upgraded the PHP as well the modules and the system is running on the browser. However, when I want to run the upgrade or healthcheck script on the command line, it shows me this error:

PHP Fatal error:  You must enable the gnupg extension to use Passbolt. in /etc/passbolt/requirements.php on line 31

I have read the forum and teste this command

php8.3 -i | grep gnupg

and this is the output

gnupg support => enabled

Browser Healthcheck output:

Passbolt API Status


PHP version 8.3.0.

PHP version is 8.1 or above.

PCRE compiled with unicode support.

The temporary directory and its content are writable and not executable.

The logs directory and its content are writable.

GD or Imagick extension is installed.

Intl extension is installed.

Mbstring extension is installed.

SSL access is enabled.

Config files

The application config file is present

The passbolt config file is present

Core config

Debug mode is off.

Cache is working.

Unique value set for security.salt

Full base url is set to ***

App.fullBaseUrl validation OK.

/healthcheck/status is reachable.


The application is able to connect to the database

31 tables found

Some default content is present

The database schema up to date.

GPG Configuration

PHP GPG Module is installed and loaded.

The environment variable GNUPGHOME is set to /var/lib/passbolt/.gnupg.

The directory /var/lib/passbolt/.gnupg containing the keyring is writable by the webserver user.

The server OpenPGP key is not the default one

The public key file is defined in /etc/passbolt/passbolt.php and readable.

The private key file is defined in /etc/passbolt/passbolt.php and readable.

The server key fingerprint matches the one defined in /etc/passbolt/passbolt.php.

The server public key defined in the /etc/passbolt/passbolt.php (or environment variables) is in the keyring.

There is a valid email id defined for the server key.

The public key can be used to encrypt a message.

The private key can be used to sign a message.

The public and private keys can be used to encrypt and sign a message.

The private key can be used to decrypt a message.

The private key can be used to decrypt and verify a message.

The public key can be used to verify a signature.

The server public key format is Gopengpg compatible.

The server private key format is Gopengpg compatible.

Application configuration

Using latest passbolt version (4.4.2).

Passbolt is configured to force SSL use.

App.fullBaseUrl is set to HTTPS.

Selenium API endpoints are disabled.

Search engine robots are told not to index content.

The deprecated self registration public setting was not found in /etc/passbolt/passbolt.php.

Host availability checking is disabled.

Serving the compiled version of the javascript app.

Some email notifications are disabled by the administrator.

This is on a Ubuntu 20.04.6 LTS + Nginx 1.18.0. The Passbolt CE has been installed through DigitlaOcean’s 1-click install package.

Please let me know your thoughts on this.

[X ] I have read intro post: About the Installation Issues category
[X ] I have read the tutorials, help and searched for similar issues
[X ] I provide relevant information about my server (component names and versions, etc.)
[X ] I provide a copy of my logs and healthcheck
[X ] I describe the steps I have taken to trouble shoot the problem
[X ] I describe the steps on how to reproduce the issue

hey @wwiit welcome to the forum!

Right now we don’t support php 8.3 as it was just released and we need some time to make sure it works.

For your particular update issue though I would recommend following one of our guides for migrating to a new server which has a a more recent version of php installed by default instead of adding a ppa and trying to update that way

Thanks @clayton .
However, the problem was not setting the default PHP version to newly installed 8.3 version. I did the sudo update-alternatives --set php /usr/bin/php8.3 and everything is working fine again.