matomo-org / matomo

Empowering People Ethically with the leading open source alternative to Google Analytics that gives you full control over your data. Matomo lets you easily collect data from websites & apps and visualise this data and extract insights. Privacy is built-in. Liberating Web Analytics. Star us on Github? +1. And we love Pull Requests!
https://matomo.org/
GNU General Public License v3.0
19.59k stars 2.61k forks source link

[Bug] PHP 8.2 and 8.3 breaks the SSL connection to Matomo's database #22395

Closed atom-box closed 1 month ago

atom-box commented 1 month ago

What happened?

The config file and certificate work fine for PHP 8.1. But as soon as PHP 8.2 or 8.3 are implemented the following error is thrown

[PDOException]
PDO::__construct(): Unable to set local cert chain file `/run/secrets/mysql
/tls.crt'; Check that your cafile/capath settings include details of your certificate and its issuer

See more below.

What should happen?

SSL cert should be found when connecting to db with PHP 8.2.

How can this be reproduced?

To reproduce the problem:

  1. Update to either PHP to 8.2 or 8.3*
  2. Matomo will fail to connect to the database; it breaks Matomo**
  3. Roll back to PHP 8.1***
  4. Matomo works normally

PHP 8.2-fpm-alpine or PHP 8.3.8-fpm-alpine The error is [PDOException] PDO::__construct(): Unable to set local cert chain file `/run/secrets/mysql /tls.crt'; Check that your cafile/capath settings include details of your certificate and its issuer But the config file is fine when using PHP 8.1. Php 8.1.15-fpm-alpine

Matomo version

5.1.0

PHP version

No response

Server operating system

https://github.com/matomo-org/docker/blob/master/fpm-alpine/Dockerfile

What browsers are you seeing the problem on?

No response

Computer operating system

Alpine Linux

Relevant log output

ERROR     [2024-07-02 12:54:15] 12  There was an error while regenerating container releases: /var/www/html/libs/Zend/Db/Adapter/Pdo/Abstract.php(144): SQLSTATE[HY000] [2002] Cannot connect to MySQL using SSL [Query: , CLI mode: 1]
Done
Error: error or warning logs detected, exit 1
+ /var/www/html/console custom-matomo-js:update
ERROR     [2024-07-02 12:54:16] 19  Uncaught exception: /var/www/html/libs/Zend/Db/Adapter/Pdo/Abstract.php(144): SQLSTATE[HY000] [2002] Cannot connect to MySQL using SSL [Query: , CLI mode: 1]

In Abstract.php line 144:                                                          
  SQLSTATE[HY000] [2002] Cannot connect to MySQL using SSL  

In Abstract.php line 124:                     
  SQLSTATE[HY000] [2002] Cannot connect to MySQL using SSL  

In Abstract.php line 124:                   
  PDO::__construct(): Unable to set local cert chain file `/run/secrets/mysql  
  /tls.crt'; Check that your cafile/capath settings include details of your c  
  ertificate and its issuer

Validations

atom-box commented 1 month ago

Reminder: this is happening on PHP 8.2-fpm-alpine, and not on PHP 8.1-fpm-alpine https://github.com/matomo-org/docker/blob/master/fpm-alpine/Dockerfile

And it is not happening on the PHP 8.2 that the rest of us are using.

michalkleiner commented 1 month ago

I wonder if this is an error specific to the Matomo docker image. Has someone reproduced this outside of that docker image?

atom-box commented 1 month ago

Does the following make a difference?

The error mentions mysql.cnf which is related to MySQL instance and not Matomo.

In Abstract.php line 124:
[PDOException]
PDO::__construct(): Unable to set local cert chain file `/run/secrets/mysql
/tls.crt'; Check that your cafile/capath settings include details of your certificate and its issuer
michalkleiner commented 1 month ago

Since this error is related to the docker image that is not officially supported by Matomo, someone can either keep troubleshooting it or we can move the issue to the Matomo Docker repository. It most likely is caused by some differences in how the Docker images for newer versions of Matomo (and PHP) are created, perhaps based on a different version of the base system etc. There can be a number of reasons, but I doubt the problem would be with Matomo (the application) itself.

atom-box commented 1 month ago

I reconstituted this as a Docker issue:

[Bug] PHP 8.2 and 8.3 breaks the SSL connection to the SQL database