在php.ini中存储PDO详细信息

时间:2009-10-30 13:58:39

标签: php database pdo

根据PDO documentation,您可以在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 个答案:

答案 0 :(得分:1)

根据文档,这是不可能的。也许不想要。如果查看PDO __construct()方法,则需要3个参数:DSN(可以是php.ini中定义的pdo.dsn.name的名称),用户名和密码。

答案 1 :(得分:0)

您可以将数据库用户名和密码存储在环境变量中,然后可以在$_ENV超全局的PHP脚本中使用。

AFIACT,您无法从php.ini设置环境变量,但您可以将其设置为apache配置,包括.htaccess文件。 E.g。

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

然后在PHP中你可以使用:

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

您还可以将DSN作为环境变量放在一起。