根据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"
答案 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作为环境变量放在一起。