Domanda

Secondo la documentazione DOP , è possibile archiviare l'accesso al database dettagli in php.ini, lontano dal file php (esempio 3). Ma non spiega come archiviare nome utente e password, solo il database e l'host. Come lo faresti?

Questo è il metodo usato nella documentazione:

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

Ho provato ad aggiungere il nome utente e la password all'host, ma non gli piace: tra nome utente e password, e non riconosce un indirizzo con solo un nome utente come un indirizzo reale:

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

Ho anche provato a mettere il nome utente e la password come argomenti separati, ma non lo fa.

[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"
È stato utile?

Soluzione

Secondo la documentazione, questo non è possibile. E probabilmente non voluto. Se guardi il metodo __construct () DOP, ci vogliono 3 argomenti: un DSN (che può essere un nome per un pdo.dsn.name definito nel tuo php. ini), un nome utente e una password.

Altri suggerimenti

È possibile memorizzare il nome utente e la password del DB in una variabile di ambiente, che è quindi disponibile all'interno dello script PHP nel superglobal $ _ENV .

AFIACT, non è possibile impostare una variabile di ambiente da php.ini, ma è possibile impostare la configurazione di apache, incluso in un file .htaccess. Per es.

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Quindi nel tuo PHP puoi usare:

$db = new PDO('mydb',

È possibile memorizzare il nome utente e la password del DB in una variabile di ambiente, che è quindi disponibile all'interno dello script PHP nel superglobal $ _ENV .

AFIACT, non è possibile impostare una variabile di ambiente da php.ini, ma è possibile impostare la configurazione di apache, incluso in un file .htaccess. Per es.

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Quindi nel tuo PHP puoi usare:

<*>

Potresti anche mettere il DSN come variabile d'ambiente per tenerlo tutto insieme.

ENV['mysql_username'],

È possibile memorizzare il nome utente e la password del DB in una variabile di ambiente, che è quindi disponibile all'interno dello script PHP nel superglobal $ _ENV .

AFIACT, non è possibile impostare una variabile di ambiente da php.ini, ma è possibile impostare la configurazione di apache, incluso in un file .htaccess. Per es.

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Quindi nel tuo PHP puoi usare:

<*>

Potresti anche mettere il DSN come variabile d'ambiente per tenerlo tutto insieme.

ENV['mysql_password']);

Potresti anche mettere il DSN come variabile d'ambiente per tenerlo tutto insieme.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top