🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

PHPのDB設定を安全に分ける方法

PHPサイトをGitHubで管理するなら、DBパスワードをコードに直接書かない形にしておくのが安全です。おすすめは、GitHubに上げる共通ファイルと、サーバーだけに置く秘密ファイルを分ける方法です。

確認日とこのページの使い方

確認日: 2026年5月19日。この記事では、PHPサイトのDB接続情報を、GitHubへ上げるファイルと、ローカルや本番サーバーだけに置くファイルへ分ける方法を整理します。

DBホスト名、DBユーザー名、DBパスワード、DSN、管理画面ログイン情報は、記事、AI相談、GitHub、公開リポジトリにそのまま貼らないでください。ここでは本物の値ではなく、見本名だけを使います。

このページで整理できること

  • DB設定をGitHubに上げない理由
  • db_config.phpdb_config.local.php、見本ファイルの役割分担
  • ローカル、本番、GitHubで置くファイルを分ける確認順
  • AIにDB接続まわりを相談する時に伏せる情報

DB設定を貼らない理由

DB接続情報は、サイトのデータへ入るための鍵です。GitHubの公開リポジトリやAI相談欄に貼ると、意図しない相手にDB名、ユーザー名、パスワード、接続先が見える可能性があります。

  • GitHubに一度pushした秘密情報は、後から消しても履歴に残ることがある
  • AI相談では、会話履歴や共有画面に秘密情報が残る可能性がある
  • ローカル用DBと本番DBを混同すると、本番データを壊す危険がある
  • サーバーだけに必要な設定は、GitHubではなくサーバー上に残す

ファイル構成

ファイル役割GitHub
includes/db_config.php接続処理本体上げる
includes/db_config.local.php本物のDB情報上げない
includes/db_config.local.example.php見本上げる

local/config分離の考え方

GitHubに上げるファイルには、接続処理の形だけを書きます。本物の接続情報は、ローカルPCや本番サーバーにだけ置く*.local.phpへ分けます。

場所置くもの置かないもの
GitHub 接続処理本体、見本ファイル、説明コメント 本物のDBホスト、ユーザー名、パスワード
ローカルPC ローカル開発用のdb_config.local.php 本番DBの情報を不用意に置かない
本番サーバー 本番用のdb_config.local.php 見本の空設定だけで公開しない
AI相談 エラー文、ファイル構成、伏せたサンプルコード パスワード、秘密鍵、管理画面ログイン情報

db_config.phpの基本形

<?php
$local_config = __DIR__ . '/db_config.local.php';

if (is_file($local_config)) {
  require $local_config;
} else {
  $dsn = getenv('APP_DB_DSN') ?: '';
  $db_user = getenv('APP_DB_USER') ?: '';
  $db_password = getenv('APP_DB_PASSWORD') ?: '';
}

if (empty($dsn) || empty($db_user)) {
  exit('DB接続設定が見つかりません。');
}

$pdo = new PDO($dsn, $db_user, $db_password, [
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  PDO::ATTR_EMULATE_PREPARES => false,
]);

.gitignoreに追加する

includes/db_config.local.php

ロリポップへアップロードするときは、db_config.phpdb_config.local.php の両方が必要です。GitHubへpushするのは db_config.php と見本ファイルだけにします。

本番アップロード前の確認

本番サーバーでは、GitHubに上げないdb_config.local.phpが必要です。一方で、そのファイルを間違ってGitHubへpushしないように分けて確認します。

# GitHubへ上げる前に確認
git status
git diff --cached --name-only

# local設定がGit管理対象になっていないか確認
git check-ignore -v includes/db_config.local.php
  • includes/db_config.local.php.gitignoreに入っている
  • includes/db_config.local.example.phpには本物の値を書いていない
  • 本番サーバーには本番用のdb_config.local.phpを置いている
  • ローカル用DB情報と本番用DB情報を混ぜていない
  • アップロード後に、エラー画面ではなく公開URLで動作確認する

ロリポップで自作PHPサイトを安全に更新する全体手順は、ロリポップで自作PHPサイトを安全に更新する入口でも整理しています。

AIにDB設定まわりを相談する時に伏せる情報

AIに相談する時は、本物の接続情報ではなく、伏せ字にしたファイル構成、エラー文、どこで止まっているかを伝えます。接続できない原因を見てもらう時も、パスワードや本番DB情報は貼りません。

PHPのDB設定分離について相談したいです。

やりたいこと:
使っている環境:
- ローカル
- ロリポップなどの本番サーバー

ファイル構成:
- includes/db_config.php:
- includes/db_config.local.php:
- includes/db_config.local.example.php:
- .gitignore:

見えている症状:
- DB接続設定が見つからない
- PDO接続でエラーになる
- ローカルでは動くが本番で動かない
- GitHubへ上げてよいファイルが分からない

貼ってよい情報:
- 伏せ字にしたコード
- エラー文
- ファイル名と配置
- git statusの結果

伏せる情報:
- DBホスト名
- DB名
- DBユーザー名
- DBパスワード
- 管理画面ログイン情報
- 本番サーバーの秘密設定

関連記事