Frage

Nach der PDO Dokumentation , können Sie Datenbank-Login speichern in php.ini Details, weg von der pHP-Datei (Beispiel 3). Aber es erklärt nicht, wie Benutzername und Passwort zu speichern, nur die Datenbank und Host. Wie würden Sie das tun?

Dies ist die Methode in der Dokumentation verwendet:

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

Ich habe versucht, den Benutzernamen und das Kennwort an den Host hinzufügen, aber es mag nicht: zwischen dem Benutzernamen und Passwort, und es erkennt nicht nur eine Adresse mit nur einem Benutzernamen als reale Adresse:

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

Ich habe auch versucht, den Benutzernamen und das Passwort als separate Argumente setzen, aber es funktioniert 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"
War es hilfreich?

Lösung

Nach der Dokumentation, ist dies nicht möglich. Und wahrscheinlich nicht wollte. Wenn Sie an der PDO __construct() Methode suchen, dauert es drei Argumente: a. DSN (das ist ein Name für eine pdo.dsn.name in der php.ini definiert sein kann), einen Benutzernamen und ein Passwort

Andere Tipps

Sie können speichern Sie die DB-Benutzername und Passwort in einer Umgebungsvariablen, die dann innerhalb des PHP-Skript in der $_ENV superglobal zur Verfügung.

AFIACT, man kann nicht eine Umgebungsvariable aus der php.ini gesetzt, aber Sie können es die Apache-Konfiguration festgelegt, in einer .htaccess-Datei enthalten. Z.

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Dann in Ihrem PHP können Sie:

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

Sie können auch die DSN als Umgebungsvariable setzen könnten sie alle zusammen zu halten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top