Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich eine globale Konfigurationsdatei?

Jeder hat seine eigenen Vorlieben. Ich bevorzuge es, meine DB-Einstellungen in einer .ini-Datei außerhalb der Webroot zu speichern und ihr dann einen chmod-Wert von 0600 zuzuweisen, um zu verhindern, dass jemand außer dem Eigentümer sie liest.

Eine Beispiel-.ini-Datei sieht folgendermaßen aus:

[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass

Dann können Sie die PHP-Funktion parse_ini_file verwenden dann lesen Sie das in Ihrem Konstruktor einfach ein und parsen es in ein Array:

public function __construct($file = 'dbsettings.ini')
{
    // @todo: change this path to be consistent with outside your webroot
    $file = '../' . $file;

    if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.');

    $dns = $settings['database']['driver'] .
    ':host=' . $settings['database']['host'] .
    ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
    ';dbname=' . $settings['database']['schema'];

    // if not PDO, this part needs to be changed parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
}

Und Viola, Sie haben eine einfache und sichere Möglichkeit, Ihre Datenbankverbindung einzurichten. Diese Klasse wurde von einer PDO-Extender-Klasse übernommen, wenn Sie also PDO nicht verwenden, müssen Sie diese Zeile ändern, aber wie Sie sehen können, erhalten Sie den Benutzernamen usw. in einem $settings Reihe.

Ich würde DRINGEND vermeiden, irgendeine Art von Datenbankinformationen in einem CONSTANT zu speichern oder GLOBAL Variable eingeben. Auf diese Weise werden die $settings ist nur für diese Klassenfunktion und sonst nichts verfügbar und bietet eine zusätzliche Sicherheitsebene.