代码之家  ›  专栏  ›  技术社区  ›  Marius

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

  •  3
  • Marius  · 技术社区  · 17 年前

    根据 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 回复  |  直到 16 年前
        1
  •  1
  •   Percutio    17 年前

    根据文件,这是不可能的。可能不需要。如果你看看PDO __construct() 方法,它采用3个参数:DSN(可以是 pdo.dsn.name 在php.ini中定义),一个用户名和一个密码。

        2
  •  0
  •   rjmunro    16 年前

    您可以将db用户名和密码存储在一个环境变量中,然后在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作为一个环境变量来保存它。

    推荐文章