Almacenamiento de detalles de PDO en php.ini
Pregunta
De acuerdo con la documentación PDO , puede almacenar el inicio de sesión de la base de datos detalles en php.ini, lejos del archivo php (ejemplo 3). Pero no explica cómo almacenar el nombre de usuario y la contraseña, solo la base de datos y el host. ¿Cómo harías eso?
Este es el método utilizado en la documentación:
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
He intentado agregar el nombre de usuario y la contraseña al host, pero no me gusta: entre el nombre de usuario y la contraseña, y no reconoce una dirección con solo un nombre de usuario como dirección real:
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=username:password@localhost"
También he intentado poner el nombre de usuario y la contraseña como argumentos separados, pero no lo hace.
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;username:username;password:secret"
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;uid:username;pwd:secret"
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;UID:username;PWD:secret"
Solución
Según la documentación, esto no es posible. Y probablemente no lo quiera. Si observa el método PDO __construct ()
, se necesitan 3 argumentos: un DSN (que puede ser un nombre a un pdo.dsn.name
definido en su php. ini), un nombre de usuario y una contraseña.
Otros consejos
Puede almacenar el nombre de usuario y la contraseña de la base de datos en una variable de entorno, que luego está disponible dentro del script PHP en la superglobal $ _ENV
.
AFIACT, no puede establecer una variable de entorno desde php.ini, pero puede establecerla como la configuración de apache, incluso en un archivo .htaccess. Por ejemplo,
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
Luego, en su PHP puede usar:
$db = new PDO('mydb', Puede almacenar el nombre de usuario y la contraseña de la base de datos en una variable de entorno, que luego está disponible dentro del script PHP en la superglobal $ _ENV
.
AFIACT, no puede establecer una variable de entorno desde php.ini, pero puede establecerla como la configuración de apache, incluso en un archivo .htaccess. Por ejemplo,
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
Luego, en su PHP puede usar:
<*>
También podría poner el DSN como una variable de entorno para mantenerlo todo junto.
ENV['mysql_username'], Puede almacenar el nombre de usuario y la contraseña de la base de datos en una variable de entorno, que luego está disponible dentro del script PHP en la superglobal $ _ENV
.
AFIACT, no puede establecer una variable de entorno desde php.ini, pero puede establecerla como la configuración de apache, incluso en un archivo .htaccess. Por ejemplo,
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
Luego, en su PHP puede usar:
<*>
También podría poner el DSN como una variable de entorno para mantenerlo todo junto.
ENV['mysql_password']);
También podría poner el DSN como una variable de entorno para mantenerlo todo junto.