How to use xdebug with docker and phpstorm

延續這篇文章”網頁開發者如何使用Docker“建立完環境之後,在開發上為了trace執行的過程,因此想要加上xdebug。

首先修改原本./php/Dockerfile

1
2
3
4
5
6
7
8
9
FROM php:5.6-fpm
RUN docker-php-ext-install pdo_mysql

# 加入這些設定到xdebug.ini
RUN yes | pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini
RUN echo "xdebug.remote_connect_back=on" >> /usr/local/etc/php/conf.d/xdebug.ini

因為remote_hosts的ip可能不一定相通,所以將這個設定寫在docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
php:
build: ./php/
expose:
- 9000
links:
- mysql
volumes_from:
- app
environment:
XDEBUG_CONFIG: "remote_host=10.10.1.233 idekey=gtiapidocker remote_enable=1 remote_handler=dbgp remote_port=9000 remote_autostart=1 remote_connect_back=0 remote_log=/var/www/html/xdebug.log"
PHP_IDE_CONFIG: "serverName=docker-ci"

執行下面指令取得目前您電腦連線的 IP,並指定給 remote_host

1
$ ipconfig getifaddr en0

以及注意到PHP_IDE_CONFIGserverName,需與 PHPStorm Name 一致。

接著來設定PHPStorm。叫出Preferences(command + ,),Languages & Frameworks > PHP > Servers,設定如下。

接著點擊右上方,新增一個PHP Remote Debug

Servers,選到剛剛新增的 docker-ciIde key 記得要和 docker-compose.yml 裡的設定一樣

最後選到 docker-ci,並把話筒點開!監聽 xdebug。