Хранение деталей PDO в php.ini - PullRequest
       14

Хранение деталей PDO в php.ini

3 голосов
/ 30 октября 2009

Согласно документации PDO , вы можете хранить данные для входа в базу данных в php.ini, вне php-файла (пример 3). Но это не объясняет, как хранить имя пользователя и пароль, только база данных и хост. Как бы вы это сделали?

Этот метод используется в документации:

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

Я попытался добавить имя пользователя и пароль к хосту, но ему не нравится: между именем пользователя и паролем, и он не распознает адрес с только именем пользователя в качестве реального адреса:

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

Я также пытался указать имя пользователя и пароль в качестве отдельных аргументов, но это не так.

[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"

Ответы [ 2 ]

1 голос
/ 30 октября 2009

Согласно документации, это невозможно. И, вероятно, не хотел. Если вы посмотрите на метод PDO __construct(), он принимает 3 аргумента: DSN (который может быть именем для pdo.dsn.name, определенным в вашем php.ini), имя пользователя и пароль.

0 голосов
/ 06 апреля 2010

Вы можете сохранить имя пользователя и пароль БД в переменной среды, которая затем будет доступна внутри скрипта PHP в суперглобальном файле $_ENV.

AFIACT, вы не можете установить переменную окружения из php.ini, но вы можете установить ее в конфигурации apache, в том числе в файле .htaccess. Э.Г.

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

Тогда в вашем PHP вы можете использовать:

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

Вы также можете поместить DSN в качестве переменной среды, чтобы сохранить все вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...