はじめに
仕事でphp5.5の環境構築をすることになったのですが、xdebugが動作しませんでした。
解決するのに結構嵌ってしまったので、対処法を残します。
環境
- VSCode
- Docker
- php5.5
- mysql5.7
結論
xdebug3を使用していたため、動作しませんでした。
xdebug2.6.0からphp5系がサポート対象外になったようです。
http://xdebug.org/announcements/2018-01-29
php5.5を使用する場合はxdebug2.5.5を使用しましょう。
php5.3以前を使用する場合は、xdebug2.2.7をインストールしてください。
xdebug2.3.0からphp5.3以前がサポート対象外のようです。
http://xdebug.org/announcements/2015-02-22
フォルダ構成
├── .vscode
│ └── launch.json
├── docker
│ ├── Dockerfile
│ └── php.ini
├── docker-compose.yml
設置ファイル
docker-compose.yml
version: '3'
services:
php:
build: ./docker/php
volumes:
- .:/var/www/html
ports:
- 8000:80
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=user
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=mysql
Dockerfile
FROM php:5.5-apache
RUN apt-get update -qq \
&& apt-get install -y \
&& pecl install xdebug-2.5.5 \
&& docker-php-ext-enable xdebug
COPY ./php.ini /usr/local/etc/php/
WORKDIR /work
php.ini
[XDebug]
xdebug.remote_port = 9000
xdebug.remote_host = host.docker.internal
xdebug.idekey = "VSCODE"
xdebug.remote_autostart= 1
xdebug.remote_connect_back = 0
xdebug.remote_enable = 1
xdebug2と3では記述が異なります。
3の記述では動作しないのでお気をつけください。
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "VSCODE",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/var/www/html":"${workspaceRoot}/"
}
}
]
}