Хранение деталей PDO в php.ini
Вопрос
Согласно документации по 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"
Решение
Согласно документации, это невозможно. И, вероятно, не хотел. Если вы посмотрите на метод PDO __ construct ()
, он принимает 3 аргумента: DSN (который может быть именем для pdo.dsn.name
, определенного в вашем php. ini), имя пользователя и пароль.
Другие советы
Вы можете сохранить имя пользователя и пароль БД в переменной среды, которая затем будет доступна внутри сценария PHP в суперглобальном теге $ _ ENV
.
AFIACT, вы не можете установить переменную окружения из php.ini, но вы можете установить ее в конфигурации apache, в том числе в файле .htaccess. Например.
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
Тогда в вашем PHP вы можете использовать:
$db = new PDO('mydb', Вы можете сохранить имя пользователя и пароль БД в переменной среды, которая затем будет доступна внутри сценария PHP в суперглобальном теге $ _ ENV
.
AFIACT, вы не можете установить переменную окружения из php.ini, но вы можете установить ее в конфигурации apache, в том числе в файле .htaccess. Например.
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
Тогда в вашем PHP вы можете использовать:
<*>
Вы также можете поместить DSN в качестве переменной среды, чтобы сохранить все вместе.
ENV['mysql_username'], Вы можете сохранить имя пользователя и пароль БД в переменной среды, которая затем будет доступна внутри сценария PHP в суперглобальном теге $ _ ENV
.
AFIACT, вы не можете установить переменную окружения из php.ini, но вы можете установить ее в конфигурации apache, в том числе в файле .htaccess. Например.
SetEnv mysql_username dbuser
SetEnv mysql_password dbpass
Тогда в вашем PHP вы можете использовать:
<*>
Вы также можете поместить DSN в качестве переменной среды, чтобы сохранить все вместе.
ENV['mysql_password']);
Вы также можете поместить DSN в качестве переменной среды, чтобы сохранить все вместе.