PHP PDO: muestra la contraseña cuando hay demasiadas conexiones

Cada vez que mi sitio web recibe demasiadas conexiones, muestra mi información de la base de datos.

He indicado específicamente a PDO que no muestre ningún mensaje de error con PDO::ERRMODE_SILENT :

 $dsn = "mysql:host=" . $database['host'] . ";dbname=" . $database['db']; $dbh = new PDO($dsn, $database['user'], $database['pass'], array(PDO::ATTR_PERSISTENT => false)); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); // <== add this line //echo 'Connected to Database
';

Además, he desactivado los errores de PHP:

 error_reporting(0); ini_set('display_errors', '0'); 

¿Por qué mi PDO muestra mi información sensible de la base de datos a todos cuando hay demasiadas conexiones?

El problema es que está tratando de conectarse a la base de datos ANTES de establecer el atributo silencioso. Entonces, durante el bash de conexión, PDO sigue siendo libre de gritar tan fuerte como lo desee. Debe especificar el silencio como parte del bash de conexión en sí:

 $dbh = new PDO($[..snip..], array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); ^^^^^^^^^^^