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"
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top