Memorizzazione dei dettagli DOP in php.ini
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"
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.