Вопрос

Согласно документации по 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 в качестве переменной среды, чтобы сохранить все вместе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top