私個人のデバックのための変更
ということですが、開発環境ではチームのみなさんも xdebug を使いませんか?
開発環境では自分だけでなく、チームも xdebug を使う場合
環境を開発用と本番用で分けることで、
開発環境用の php.ini
を push しても問題なくなります。
Docker を使っているということは、
開発環境の設定をある程度チームで共有できていると思いますので、
チームの開発環境を構築した方と相談するとよいでしょう。
開発環境と本番環境の php.ini の分け方
大枠だけを説明すると、
- 本番環境用の
php.ini
のテンプレートとして、php.ini.production
をコミットしておきます
- 本番環境へのデプロイ処理に
php.ini.production
から php.ini
を生成する処理を追加します
これで、開発環境の php.ini
を プッシュしても本番環境には影響がなくなります。
自分だけが xdebug を使う場合
自分だけで、今すぐできること
git stash
を使い、
ローカルリポジトリーに自分の php.ini
への変更を保存しておきます。
例
作業ツリー上が php.ini の変更だけであることを確認します:
console
1# php.ini だけが変更されています
2
3$ git status
4On branch feature
5Changes not staged for commit:
6 (use "git add <file>..." to update what will be committed)
7 (use "git restore <file>..." to discard changes in working directory)
8 modified: php.ini
9
10no changes added to commit (use "git add" and/or "git commit -a")
11
12# php.ini の変更内容は、たとえば次のような内容でしょう
13
14$ git diff php.ini
15diff --git a/php.ini b/php.ini
16index e69de29..0bc13df 100644
17--- a/php.ini
18+++ b/php.ini
19@@ -0,0 +1,4 @@
20+[xdebug]
21+zend_extension="<path to xdebug extension>"
22+xdebug.remote_enable=1
23+xdebug.remote_port = <port_number>
php.ini の変更を stash に保存します
console
1# あとで見たときにわかりやすいように "xdebug" という名前をつけておきます
2
3$ git stash --message xdebug
4The file will have its original line endings in your working directory
5Saved working directory and index state On feature-a: xdebug
6
7# stash を確認すると、xdebug 設定の変更履歴として保存されています
8
9$ git stash list
10stash@{0}: On feature-a: xdebug
11
12# 作業ツリー上からは php.ini の変更がなくなります
13
14$ git diff php.ini
15
16
これでブランチを切り替えられます:
console
1$ git checkout feature-b
2Switched to branch 'feature-b'
ここで xdebug の設定を再度適用します:
console
1# stash の一覧を確認し、メッセージが "xdebug" のインデックスを確認します
2# この例では、インデックスは 0 です
3
4$ git stash list
5stash@{0}: On feature: xdebug
6
7# インデックスを指定して、stash apply コマンドを実行します
8
9$ git stash apply 0
10On branch feature-b
11Changes not staged for commit:
12 (use "git add <file>..." to update what will be committed)
13 (use "git restore <file>..." to discard changes in working directory)
14 modified: php.ini
15
16no changes added to commit (use "git add" and/or "git commit -a")
17
18# 作業ツリーに変更が適用されています
19
20$ git diff php.ini
21diff --git a/php.ini b/php.ini
22index e69de29..0bc13df 100644
23--- a/php.ini
24+++ b/php.ini
25@@ -0,0 +1,4 @@
26+[xdebug]
27+zend_extension="<path to xdebug extension>"
28+xdebug.remote_enable=1
29+xdebug.remote_port = <port_number>
この stash を消してしまったり、ローカルリポジトリー自体を削除してしまうと、
xdebug 設定のための変更内容は失われてしまうので、
心配な場合は別途手順を wiki 等に残しておくことをおすすめします。
チームと相談すること
php.ini
の設定が開発者によって異なる場合、
php.ini
を Git 管理から外すことを検討してみましょう。
開発環境と本番環境の php.ini の分け方
大枠だけを説明すると、
- 本番環境用の
php.ini
のテンプレートとして、php.ini.production
をコミットしておきます
- 本番環境へのデプロイ処理に
php.ini.production
から php.ini
を生成する処理を追加します
php.ini
を Git 管理から外します
これで、開発環境の php.ini は Git とは関係なくなり、自由に編集できるようになります。
php.ini
をコミット・プッシュしてしまわないよう、
.gitignore に登録しておきます:
標準的な設定があるのであれば、
php.ini.development
などとしてテンプレートファイルを用意し、
開発者はそのファイルをコピーして開発を始める手順にするとよいでしょう。