非公開ファイルを作りそこに設定する
1. 公開ディレクトリと非公開ディレクトリ
レンタルサーバー(Xserver など)では以下のような構造になっていることが多いです:
|
1 2 3 4 5 |
/home/username/ ← ホームディレクトリ(非公開) ├── secret-config.php ← ★ここに秘密ファイルを置く └── public_html/ ← 公開フォルダ(ここがWebに公開される) └── wp-content/ └── index.php |
public_html や htdocs が公開フォルダ
その 一つ上の階層 は Web から直接アクセスできないので安全
2. 秘密ファイルの作成
例えば /home/username/secret-config.php を作成して:
|
1 2 3 4 5 |
<?php // secret-config.php // APIキーや固定トークンを定義 define('OPENWEATHER_API_KEY', 'your-secret-api-key-123'); define('APP_FIXED_TOKEN', 'super-secret-fixed-token-456'); |
ここでdefineしたトークンなどは変数のように使えます。
公開したくないものはdefineして使いましょう。
3. WordPress 側で読み込む
APIを叩くPHPファイル(例:my-api.php)から:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php // 公開フォルダの外にある秘密設定を読み込む require '/home/username/secret-config.php'; // キーを使ってOpenWeatherMapを叩く例 $lat = 35.6895; $lon = 139.6917; $url = "https://api.openweathermap.org/data/2.5/weather?lat={$lat}&lon={$lon}&appid=" . OPENWEATHER_API_KEY . "&units=metric&lang=ja"; // データ取得 $response = file_get_contents($url); if ($response === false) { http_response_code(500); echo json_encode(['error' => 'APIリクエスト失敗']); exit; } header('Content-Type: application/json; charset=utf-8'); echo $response; |
require のところのファイルパスは公開されてしまうので
require_once(ABSPATH . ‘../secret-config.php’);
プラグインフォルダからのパスの例ですが、このようにしておくと安心。
4. 利点
secret-config.php自体はWebからアクセス不可public_html以下のコードが流出しても、キーは含まれない- 他のプロジェクトでも同じ秘密ファイルを
requireすれば使い回せる
5. 注意点
- ファイルパス
/home/username/secret-config.phpはサーバー環境で異なります
→ Xserverなら「サーバーパネル → サイトパス確認」でフルパスを確認できます - パーミッションは
600や640にしておくとさらに安心
🔑 パーミッションについて
パーミッションとは「ファイルやフォルダを誰が読めるか・書けるか・実行できるか」を数字で表したものです。
- 600 → 所有者だけが読み書きできる
- 640 → 所有者は読み書き可、同じグループは読み取り可、それ以外はアクセス不可
- 644 → 所有者は読み書き可、それ以外は読み取りのみ可(公開ファイルに多い)
- 755 → ディレクトリに多い設定(所有者が書ける、他は読み取りと実行可)
👉 秘密情報ファイル(例:secret-config.php)は 600 or 640 が理想です。
サーバーのPHP実行ユーザーが所有者グループに含まれていれば、WordPressから読み込み可能です。
✅ まとめ
- 秘密ファイルは公開ディレクトリの外に置く
- パーミッションは600〜640 で制限
- プラグインやテーマから
requireして使う - REST API を作ってアプリに返せばセキュリティも保てる
- これを使ってメールを出すコード等で自分のアドレスをdefineして使うと安心
wp-config.phpに定義する
WordPress の設定ファイルは公開ディレクトリの直下にありますが、外部から直接アクセスはできない仕組みになっています。
wp-config.php に書く場所
WordPressの wp-config.php の場合は、
他の define(...) が並んでいるあたりに書いて問題ありません(順番は関係なし)。
例:
|
1 2 3 4 5 6 |
define( 'DB_COLLATE', '' ); // ここに追加 define( 'API_SECRET_TOKEN', 'my-secret-token-123' ); define( 'WP_DEBUG', false ); |
使うときはPHPコード内で:
|
1 |
$apiKey = API_SECRET_TOKEN; |
※ ただし注意点として:
/* That's all, stop editing! Happy blogging. */の「上」に書くこと- これより下に書くと読み込まれないことがあります
.htaccess + 環境変数を使う(Xserverでも可能)
サーバー設定で環境変数に仕込んでおいて、PHPから読み取ります。
1. .htaccess に SetEnv を書く場所
基本的には <IfModule mod_rewrite.c> の上
(SetEnv は mod_rewrite とは関係ないディレクティブなので、ブロックの外に書くのが正解です。)
例:
|
1 2 3 4 5 6 7 8 9 |
# API用の秘密トークン(ここで定義) SetEnv API_SECRET_TOKEN "my-secret-token-123" <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # 以下略… </IfModule> |
PHPで:
|
1 |
$apiKey = getenv('API_SECRET_TOKEN'); |
一番安全らしいですがサーバー設定なのでミスると痛いです。

コメント