Pergunta

De acordo com a DOP documentação , você pode armazenar o login do banco de dados detalhes em php.ini, longe do arquivo php (exemplo 3). Mas não explica como armazenar nome de usuário e senha, apenas o banco de dados e host. Como você faria isso?

Este é o método usado na documentação:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"

Eu tentei adicionar o nome de usuário e senha para o anfitrião, mas não gosta: entre o nome de usuário e senha, e ele não reconhece um endereço com apenas um nome de usuário como um endereço real:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=username:password@localhost"

Eu também tentei colocar o nome de usuário e senha como argumentos separados, mas ele faz not.s

[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"
Foi útil?

Solução

De acordo com a documentação, isso não é possível. E provavelmente não queria. Se você olhar para o método DOP __construct(), leva 3 argumentos:. Um DSN (que pode ser um nome a um pdo.dsn.name definido no php.ini), um nome de usuário e uma senha

Outras dicas

Você pode armazenar o nome de usuário e senha DB em uma variável de ambiente, que é, então, disponível dentro do script PHP na superglobal $_ENV.

AFIACT, você não pode definir uma variável de ambiente de php.ini, mas você pode configurá-lo a configuração do apache, inclusive em um arquivo .htaccess. Por exemplo.

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Então em seu PHP você pode usar:

$db = new PDO('mydb',$_ENV['mysql_username'],$_ENV['mysql_password']);

Você também pode colocar o DSN como uma variável de ambiente para mantê-lo todos juntos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top