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.

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione PHP cloud pronta all'uso che fornisce una serie di vantaggi, tra cui:

  • Distribuisci la tua applicazione in pochi secondi con un semplice git push.
  • Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza migliorata.
  • Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
  • Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.

Risparmia tempo e semplificati la vita: ci vogliono solo 5 minuti per provare la soluzione di PHP cloud hosting di Stackhero!

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'