21
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPStormでステップ実行(Docker Toolbox環境)

Last updated at Posted at 2016-04-30

※Docker for Mac(Windows)の場合は以下を参照してください。
https://qiita.com/yKanazawa/items/363ba93f8a376c5b9e75

Vagrant共有フォルダ機能を利用し、PHP StormでXDebugでステップ実行している方も多いと思いますが、Docker Toolbox環境でも可能です。

Docker Toolboxから起動したDocker machineのIPアドレスは、
デフォルトでは、192.168.99.100になりますが、
Docker Machineのコンテナ内において、
xdebug_remote_hostを192.168.99.1に設定することで、
ローカルPC内のPHP Stormと通信することが可能になります。

コンテナ内のphp.d/xdebug.ini設定

コンテナ構築時に、php-pecl-xdebugをインストールし、php.d/xdebug.iniに以下の設定をしておきます

[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable = On
xdebug.remote_port = 9000
;xdebug.remote_autostart = On
xdebug.remote_host = 192.168.99.1
xdebug.profiler_output_dir = "/tmp"
xdebug.max_nesting_level= 1000
xdebug.idekey = "PHPSTORM"

※xdebug.remote_autostart = onのコメントアウトを解除すると、PHP Storm側でステップ実行が可能になりますが、 PHP Stormがないと処理が先に進まなくなるため、普段はコメントアウトしています

VirtualBoxの共有フォルダ設定

ここでは、以下の前提で設定します。

フォルダーのパス:D:\cygwin64\home\username
フォルダー名:Users

image

コンテナのマウント設定

  • D:\cygwin64\home\usernameにwwwディレクトリを作成
    • Docker Machine内では/Users/www/ディレクトリと共有される
  • D:\cygwin64\home\username\wwwにtestプロジェクトを配置
  • wwwディレクトリをコンテナ起動時に-vコマンドでマウント
docker run \
--name $DOCKER_NAME \
-v /Users/www:/var/www \
--hostname $DOCKER_NAME \
--privileged \
-d $IMAGE_NAME

PHP Stormの設定

Macの場合:PHPStorm -> Preferences... > Languages & Frameworks > PHP > Debug
Windowsの場合:File -> Settings... > Languages & Frameworks > PHP > Debug
において、以下のように設定
image

Preferences... > Build, Execution, Deployment > Deployment
+を押下
Connectionタブにおいて以下のように設定
image

Mappingsタブ
image

Preferences... > Languages & Frameworks > PHP > Servers
+を押下
1.png

ステップ実行の設定

PHPStorm画面右上にある電話アイコンをクリックし、connectを有効にします。

image

※有効にすると、コンテナからローカルPC(192.168.99.1)に対して9000番ポートで通信できるようになります

$ telnet 192.168.99.1 9000
Trying 192.168.99.1...
Connected to 192.168.99.1.
Escape character is '^]'.

PhpStorm Debug設定

Run > Edit Configurations...
+を押下
PHP Remote Debugを選択

image

  • 先ほど設定したServersを選択
  • Ide key(session id)にphp.iniのxdebug.idekeyを設定
  • 「OK」ボタンを押下

ステップ実行の開始

xdebug.ini設定

コンテナ内のphp.d/xdebug.iniの
xdebug.remote_autostart = On
のコメントアウトを解除します

[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable = On
xdebug.remote_port = 9000
xdebug.remote_autostart = On
xdebug.remote_host = 192.168.99.1
xdebug.profiler_output_dir = "/tmp"
xdebug.max_nesting_level= 1000
xdebug.idekey = "PHPSTORM"

httpdを再起動します

sudo service httpd restart

ステップ実行の開始

PHP Stormでブレークポイントを設定しておくと、設定した箇所からステップ実行できるようになります。

例えば、app_controllerのbeforeFilter内にブレークポイントを設定して
http://dev.example.jp/
にアクセスすると、ブレークポイントの箇所からステップ実行が可能になります。
image

21
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?