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";
?>
Gestione dell'errore "SSL operation failed with code 1"
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:
- Su Ubuntu/Debian, esegui
sudo apt-get install ca-certificates - 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:
- Scarica il certificato sul tuo computer: https://letsencrypt.org/certs/isrgrootx1.pem
- Aggiungi il file
isrgrootx1.pemai tuoi file di progetto PHP. - Commenta la linea
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/' - Decommenta la linea
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'