php - mysql 的凭据应该放在哪里?

标签 php mysql git

登录 mysql 数据库需要凭据。我在名为 class.DBOne.php 的 PHP 类中拥有这些凭据。

这是在服务器上的一个 git 仓库中。我使用推送来部署。

我想与一些合约开发者共享 repo 协议(protocol),但我不希望他们访问凭据。

我该如何缓解这种情况?

凭据应该是什么?

这是一个片段:

<?php

// creates one instance of a database
class DBOne
{
    private $DB_USER =              'foo';
    private $DB_PASS =              'foo';
    private $DB_DRIVER =            'mysql:dbname=foo;host=localhost';

    // singleton uses static variable to ensure only 1 instance at a time
    private static $database;

    private function __construct()
    {
        $this->checkForClearDB();
        // self::checkForClearPostgres();
        try
        {
            // instaniate a database connection
            self::$database = new PDO( $this->DB_DRIVER, $this->DB_USER, $this->DB_PASS );
        } 
        catch( PDOException $pdoError )
        {
            echo 'pdo connection failed: ' . $pdoError->getMessage();
        }
    }

最佳答案

将凭据移至单独的文件, 并使内容尽可能简单, 本质上只是变量赋值,像这样:

<?php    
$DB_USER =              'foo';
$DB_PASS =              'foo';
$DB_DRIVER =            'mysql:dbname=foo;host=localhost';
?>

并且不要在版本控制中添加这个文件。添加一个示例文件, 开发人员应根据其本地开发数据库进行自定义。

当你在另一个文件中使用这些变量时, 您必须使用 global 关键字表明它们在全局范围内,例如:

global $DB_USER, $DB_PASS, $DB_DRIVER;

关于php - mysql 的凭据应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445187/

相关文章:

mysql - 获取日期范围内的记录

MySQL-从 2 个表中计数

mysql - 索引的一部分可以用在 MySQL 中具有 AND 的查询中吗?

git pull --rebase 与 git rebase : what's the danger?

php - 将元素添加到其他元素

javascript - 在 PHP 中创建模式警报而不是页面重定向验证

git - 如何将多个 Git 提交(已推送)还原到已发布的存储库?

Git push返回错误并且不提示输入密码

php - ActionScript 3 php 变量没有改变

php - 相当于mysql/laravel中的qualify语句?