sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opretter man en global konfigurationsfil?

Alle har deres egne præferencer. Jeg foretrækker at gemme mine DB-indstillinger i en .ini uden for webroot og derefter give den en 0600 chmod værdi, for at forhindre andre end ejeren i at læse den.

Et eksempel på .ini vil se sådan ud:

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

Så kan du bruge php-funktionen parse_ini_file så læser du det i din konstruktør og parser det til et 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']);
}

Og viola, du har en enkel og sikker måde at opsætte din databaseforbindelse på. Denne klasse blev taget fra en PDO extender-klasse, så hvis du ikke bruger PDO, skal du ændre den linje, men som du kan se, får du brugernavnet osv. i en $settings array.

Jeg ville MEGET undgå at gemme nogen form for databaseinformation i en CONSTANT eller GLOBAL type variabel. På denne måde er $settings er kun tilgængelig for den klassefunktion og intet andet, hvilket giver en ekstra smule sikkerhedslag.



  1. Brug XEvent Profiler til at fange forespørgsler i SQL Server

  2. SQLException:Ingen passende driver fundet til jdbc:oracle:thin:@//localhost:1521/orcl

  3. Ydeevne overraskelser og antagelser:SÆT ANTAL TIL

  4. Forskellen mellem LockModeType Jpa