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

本番環境とローカル環境の設定を分ける方法

ローカルでは動くのにロリポップ本番で止まる時は、コードそのものよりも、DBホスト名、URL、ファイルパス、エラー表示、メール送信先などの環境差が原因になりがちです。

この記事では、自作PHPサイトを公開する前に、ローカル、本番、GitHubへ置く設定を分ける考え方を整理します。目的は「本番パスワードをGitHubに上げない」「ローカル用設定を本番へ上書きしない」「本番だけのファイルを消さない」ことです。

設定を混ぜないための分け方

共通コードはGitHubで管理し、ローカル専用と本番専用の秘密情報はそれぞれの環境だけに置きます。

PHPサイトでGitHubに共通コード、ローカルに開発用設定、本番にロリポップ用設定を分けて置く流れの図解

分けるべき設定

項目ローカル本番
DBホスト名localhost やXAMPPのDBロリポップのDBサーバー名
DB名・ユーザー・パスワード開発用DB本番用DB
サイトURLhttp://127.0.0.1:8083 などhttps://example.com
エラー表示表示して原因を見つける画面に出さずログで見る
メール送信先自分のテスト用アドレス正式な問い合わせ先
アップロード対象開発中のファイルを含む公開に必要なファイルだけ

おすすめのファイル構成

共通処理と秘密情報を分けると、GitHubへ上げるもの、FTPで本番へ置くものを判断しやすくなります。

includes/
  app_config.php
  app_config.local.php
  app_config.production.php
  app_config.example.php
ファイル役割GitHub本番FTP
app_config.php共通の読み込み処理上げる上げる
app_config.local.phpローカル用の秘密情報上げない上げない
app_config.production.php本番用の秘密情報上げない本番だけに置く
app_config.example.php設定見本上げる任意

共通設定ファイルの例

環境名を見て、ローカル用か本番用の設定を読み込む形にします。実際のDBパスワードは別ファイルへ置きます。

<?php
$is_local = in_array($_SERVER['HTTP_HOST'] ?? '', ['localhost', '127.0.0.1'], true);

$config_file = $is_local
  ? __DIR__ . '/app_config.local.php'
  : __DIR__ . '/app_config.production.php';

if (!is_file($config_file)) {
  exit('設定ファイルが見つかりません。');
}

require $config_file;

.gitignoreに入れるもの

秘密情報、ログ、バックアップ、ローカルだけのメモはGitHubに上げません。公開フォルダへ置く場合も、外から見えない場所にするかアクセス制限を確認します。

includes/app_config.local.php
includes/app_config.production.php
*.log
backup/
.env

本番へ上書きしないもの

FTPでアップロードする時は、ローカル側の設定ファイルで本番ファイルを上書きしないようにします。

公開前チェック

確認見ること
ローカルURLローカル用のDBとテスト送信先を使っている
本番URL本番用のDB、URL、メール送信先を使っている
GitHubパスワード、秘密鍵、APIキーが入っていない
FTP本番設定ファイルをローカル版で上書きしていない
エラー本番では詳細を画面に出しっぱなしにしない

関連記事