PHP: Connexion de PHP à MySQL avec PDO

Cette documentation fait partie du guide Connexion à MySQL. Consultez le guide complet ici : Apprenez comment vous connecter à MySQL depuis PHP en utilisant MySQLi et PDO.

👋 Bienvenue dans la documentation Stackhero !

Stackhero offre une plateforme PHP cloud conçue pour des déploiements rapides et fiables :

  • Déployez votre application PHP en production en quelques secondes avec un simple git push.
  • Utilisez votre propre domaine, avec des certificats HTTPS automatiques configurés pour vous. Aucune intervention manuelle n'est nécessaire.
  • Comptez sur des sauvegardes automatiques, des mises à jour en un clic et une tarification claire et prévisible. Stackhero s'occupe de ces aspects pour que vous puissiez vous concentrer sur votre code.
  • Bénéficiez d'une performance et d'une sécurité élevées sur une infrastructure privée et dédiée, spécialement conçue pour vos applications.

Rendez votre flux de travail plus fluide et gagnez du temps. Prendre en main l'hébergement PHP cloud de Stackhero ne prend que quelques minutes.

PDO offre une méthode flexible pour connecter PHP à MySQL. L'exemple ci-dessous illustre comment utiliser PDO pour établir une connexion. Il aborde également les problèmes potentiels de certificat SSL qui peuvent survenir si votre système n'a pas accès aux certificats CA.

<?php

$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Pour les environnements de production, envisagez de créer une base de données et un utilisateur dédiés

$dsn = "mysql:host=$hostname;dbname=$database";

$options = array(
  // Si vous rencontrez une erreur comme "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
  // cela peut être dû à l'absence de certificats CA dans le répertoire /etc/ssl/certs/
  PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/',
  // PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem',
  PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => true,
);

$pdo = new PDO($dsn, $user, $password, $options);

$stm = $pdo->query('SELECT VERSION()');
$version = $stm->fetch();

echo 'Vous êtes connecté à une base de données exécutant la version ' . $version[0] . "\n";

?>

Si vous voyez une erreur telle que Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, il est probable que le répertoire /etc/ssl/certs/ de votre système ne contienne pas les certificats CA nécessaires.

Si vous avez accès au système exécutant votre code PHP, vous pouvez installer les certificats comme suit :

  1. Sur Ubuntu/Debian, exécutez sudo apt-get install ca-certificates
  2. Sur Alpine Linux, exécutez apk add ca-certificates

Si vous n'avez pas d'accès direct pour installer ces certificats sur votre système, vous pouvez installer le certificat manuellement :

  1. Téléchargez le certificat sur votre ordinateur : https://letsencrypt.org/certs/isrgrootx1.pem
  2. Ajoutez le fichier isrgrootx1.pem à vos fichiers de projet PHP.
  3. Commentez la ligne PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Décommentez la ligne PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'