PHPの基礎 - INIファイル

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要



INIファイルの読み込み

使用例

 # セクション無し
 host     = "localhost"
 dbname   = "your_database_name"
 username = "your_username"
 password = "your_password"
 charset  = "utf8mb4"


 # セクションあり
 [development]
 host     = "localhost"
 dbname   = "dev_database"
 username = "dev_user"
 password = "dev_password"
 charset  = "utf8mb4"
 
 [production]
 host     = "production.example.com"
 dbname   = "prod_database"
 username = "prod_user"
 password = "prod_password"
 charset  = "utf8mb4"
 
 [testing]
 host     = "test.example.com"
 dbname   = "test_database"
 username = "test_user"
 password = "test_password"
 charset  = "utf8mb4"


 <?php
 try {
    // parse_ini_file関数を使用してINIファイルを読み込む (セクション無し)
    $config = parse_ini_file('hoge.ini');
 
    // parse_ini_file関数を使用してINIファイルを読み込む (セクションあり)
    $config = parse_ini_file($iniPath, true);
 
    if ($config === false) {
       throw new Exception('設定ファイルの読み込みに失敗');
    }
 
    // セクションありの場合
    // 指定されたセクションが存在するか確認
    if (!isset($config[$section])) {
       throw new Exception("指定されたセクション '{$section}' が見つかりません。");
    }
    $sectionConfig = $config[$section];
 
    // 接続に必要な情報を設定ファイルから取得
    $host = $config['host'] ?? 'localhost';  // デフォルト値を設定
    $dbname = $config['dbname'] ?? '';
    $username = $config['username'] ?? 'root';
    $password = $config['password'] ?? '';
    $charset = $config['charset'] ?? 'utf8mb4';
 
    // セクションありの場合
    // 接続に必要な情報を設定ファイルから取得
    $host = $sectionConfig['host'] ?? 'localhost';
    $dbname = $sectionConfig['dbname'] ?? '';
    $username = $sectionConfig['username'] ?? 'root';
    $password = $sectionConfig['password'] ?? '';
    $charset = $sectionConfig['charset'] ?? 'utf8mb4';
 
    // DSN (Data Source Name) を構築
    $dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";
 
    // 接続オプションを設定
    // エラーモード : 例外をスロー
    // フェッチモード : 連想配列として結果を取得
    // プリペアドステートメントのエミュレーションを無効化
    $options = [
       PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
       PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
       PDO::ATTR_EMULATE_PREPARES => false,
    ];
 
    // PDOインスタンスを生成 (データベースに接続)
    $pdo = new PDO($dsn, $username, $password, $options);
 
    echo "データベースへの接続に成功";
 }
 catch (Exception $e) {
    // エラーハンドリング
    die('接続エラー: ' . $e->getMessage());
 }
 ?>