PHP: Connessione di PHP a MySQL con PDO

Questa documentazione fa parte della guida Connessione a MySQL. Consulta la guida completa qui: Scopri come connetterti a MySQL da PHP utilizzando MySQLi e PDO.

👋 Benvenuto nella documentazione di Stackhero!

Stackhero offre una piattaforma PHP cloud progettata per deployment rapidi e affidabili:

  • Distribuisci la tua applicazione PHP in produzione in pochi secondi con un semplice git push.
  • Usa il tuo dominio personale, con certificati HTTPS automatici configurati per te. Non sono necessari passaggi manuali.
  • Affidati a backup automatici, aggiornamenti con un clic e prezzi chiari e prevedibili. Stackhero si occupa di questi dettagli, così puoi concentrarti sul tuo codice.
  • Approfitta di elevate prestazioni e sicurezza su un'infrastruttura privata e dedicata, costruita appositamente per le tue applicazioni.

Rendi il tuo workflow più fluido e risparmia tempo. Iniziare con il PHP cloud hosting di Stackhero richiede solo pochi minuti.

PDO offre un metodo flessibile per connettere PHP a MySQL. L'esempio seguente illustra come utilizzare PDO per stabilire una connessione. Affronta anche i potenziali problemi di certificato SSL che possono sorgere se il tuo sistema non ha accesso ai certificati CA.

<?php

$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Per ambienti di produzione, considera di creare un database e un utente dedicati

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

$options = array(
  // Se incontri un errore come "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
  // potrebbe essere dovuto alla mancanza di certificati CA nella directory /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 'Sei connesso a un database che esegue la versione ' . $version[0] . "\n";

?>

Se vedi un errore come Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, è probabile che la directory /etc/ssl/certs/ del tuo sistema non contenga i certificati CA necessari.

Se hai accesso al sistema che esegue il tuo codice PHP, puoi installare i certificati come segue:

  1. Su Ubuntu/Debian, esegui sudo apt-get install ca-certificates
  2. Su Alpine Linux, esegui apk add ca-certificates

Se non hai accesso diretto per installare questi certificati sul tuo sistema, puoi installare il certificato manualmente:

  1. Scarica il certificato sul tuo computer: https://letsencrypt.org/certs/isrgrootx1.pem
  2. Aggiungi il file isrgrootx1.pem ai tuoi file di progetto PHP.
  3. Commenta la linea PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Decommenta la linea PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'