#はじめに
・今の職場にてPHPの開発をしているだが、デバッグができなくて困っている。苦肉の策でログを出しながら確認しているが、なんとかしたいと思い。
最近かじったDocker環境にてPHPのデバッグができる様なので、試しにやってみた。
#使用ツール
項目 | バージョン |
---|---|
PC | Razer Brade Pro 2019 |
OS | Ubuntu 18.04 LTS |
Docker | 19.03.5 |
Docker-Compose | 1.17.1 |
PHP | php:7.2.7-apache (連携されているコンテナ) |
Xdebug | 2.7.0 |
Visual Studio Code | 1.41.1 |
Dockerfile
FROM php:7.2.7-apache
RUN apt-get update && \
docker-php-ext-install mysqli && \
pecl install xdebug
docker-compose.yml
version: '3'
services:
php:
build: ./php
ports:
- '80:80'
volumes:
- ./php/html:/var/www/html
- ./php/conf/php.ini:/usr/local/etc/php/php.ini
- ./php/log/xdebug:/var/log/xdebug
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[xdebug]
; xdebugのインストール先を指定(Dockerコンテナ内)
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
; デバッグで使用するポートを指定(デフォルト値)
xdebug.remote_port=9222
; Dockerコンテナ内部から見たホストを指定
xdebug.remote_host=host.docker.internal
; ログ出力先
xdebug.remote_log=/var/log/xdebug/xdebug.log
xdebug.remote_connect_back=1
launch.json
{
"version": "0.1.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9222,
"pathMappings": {
// Dockerコンテナのdocument root : 開発環境のdocument root
"/var/www/html":"${workspaceFolder}/php/html"
}
}
]
}
index.php
<?php
echo 'Hello World<br>';
#はまった点
・Dockerの立ち上げから、HTTPへのアクセスまではすんなりいったが、ブレイクポイントで止まらなかった。結果、launch.jsonのポートの設定を自分の環境で使用しているものに変更したら動きました。
・xdebugのインストール先を指定(Dockerコンテナ内)をphp.iniファイルに記入するのが抜けていたため動かなかった。※環境によってパスが変わるようであり、Dockerを立ち上げたときにコマンド上でインストールされたパスが確認できる。
#参考にさせて頂いた記事
・Docker-composeのコマンド
https://qiita.com/okyk/items/a374ddb3f853d1688820
・構築方法
https://qiita.com/MasanoriIwakura/items/a310c75e6c5b347adf37