2
2

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.

vagrant+virtualbox+ubuntu上のdocker上のphp+apacheのxdebug+vscodeについてハマったメモ

Last updated at Posted at 2018-03-07

概要

dockerでphp5.4の開発環境を作ったメモ。古い環境での開発は面倒ですね。
vscodeにphp debugをいれてデバッグ実行。
デバッグポイントで止まらなくてハマったが、以下の記事で紹介されていた方法で解決。
VisualStudioCodeのデバッグでどうしてもブレークで止まらない場合 (PHP Xdebug)

※2018/09/06 追記
この情報は古くなっている場合があります。 最新の環境だとXdebug動きませんでした。
新しい環境で動かしたみた記事はこちら → xdebug+nginx+vscode

動作環境

  • windows10
  • vagrant2.0.2
  • virtualbox5.1.26
  • ubuntu-16.04
  • Docker version 17.09.0-ce, build 19e2cf6
  • docker-compose version 1.18.0, build 8dd22a9

構造

project
  - .vscode
    - launch.json
  + server # Docker用ファイル
  + src    # phpソースファイル
  + logs   # ログ・ファイル
  - docker-compose.yml

設定

ホスト:Visual Studio Code の PHP DEBUGの設定

"stopOnEntry": true,の設定がないとステップ実行できなかった。

.vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "stopOnEntry": true,
      "log": true,
      "pathMappings": {
          "/var/www/html": "${workspaceRoot}/src"
      }
    }
  ]
}

ゲスト: apacheサーバの設定

server/apache/Dockerfile
FROM php:5.4-apache

# Apacheモジュールインストール
RUN a2enmod rewrite

# PHPモジュールインストール
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install mysql


# Install xdebug for php debugging
RUN apt-get update
RUN apt-get install -y php-pear
RUN pecl install xdebug-2.4.1

RUN echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "debug.default_enable = 1" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_autostart=on" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_connect_back = on" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_log = /var/log/apache2/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug_settings.ini

# php設定
RUN echo '\
date.timezone = "Asia/Tokyo"\n\
memory_limit = -1\n\
' >> /usr/local/etc/php/php.ini

# PHPのログを出力
# error_log = /dev/stderr\n\
RUN echo '\
log_errors = On\n\
error_log = /var/log/apache2/php.log\n\
error_reporting = E_ALL\n\
display_errors = On\n\
' >> /usr/local/etc/php/conf.d/docker.ini

# apacheのログを出力
RUN echo '\
CustomLog /var/log/apache2/access.log combined \n\
ErrorLog /var/log/apache2/error.log\n\
LogLevel warn\n\
' >> /etc/apache2/conf-enabled/log.conf
docker-compose.yml
version: "3"
services:
  # サーバー
  php: 
    build: ./server/apache
    volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2
    ports: 
      - "80:80"

この時点のソース

vscodeを起動して、デバッガを起動しておく。
apacheを立ち上げて、表示されたページにブラウザからアクセスするとステップ実行可能。
"stopOnEntry": true,により、デバッグポイントがなくても、ファイルの最初でストップする。

おまけ

PHP7 + nginx でも同様に設定できた。

server/php7/Dockerfile
FROM php:7-fpm
RUN apt-get update 
RUN docker-php-ext-install pdo_mysql

RUN pecl install xdebug

RUN echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "debug.default_enable = 1" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_autostart=on" >> /usr/local/etc/php/conf.d/xdebug_settings.ini \
    && echo "xdebug.remote_connect_back = on" >> /usr/local/etc/php/conf.d/xdebug_settings.ini


# PHPのログを出力
# error_log = /dev/stderr\n\
RUN echo '\
log_errors = On\n\
error_log =/dev/stderr\n\
error_reporting = E_ALL\n\
display_errors = On\n\
' >> /usr/local/etc/php/conf.d/docker.ini

この時点のソース

参考

Docker for Mac の PHPStorm で Xdebug を行う
Dockerで古いPHP(5.x)のXdebugを組み込んだデバッグ環境を構築する
PHP開発者がいまさら聞けない、Xdebugの基礎の基礎
PHP5.4に対応するXdebugは2.4.1
vscode-php-debug
UbuntuへのPECL xdebugインストール
vagrant:ubuntu + docker + nginx + xdebug
【Xdebug】Windows 7のVagrant でリモートデバッグできない問題
VS CodeのDebug Extension設定について
XDEBUG EXTENSION FOR PHP | DOCUMENTATION
VisualStudioCodeのデバッグでどうしてもブレークで止まらない場合 (PHP Xdebug)
VSCodeでPythonをデバッグする
xdebug-php.md
nginx+php7.0+xdebugインストールではまったこと
UbuntuのPHP開発環境
Vagrant上のPHPを Xdebug + NetBeans(おまけでVisual Studio Codeでも)でリモートデバッグする

2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?