0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VScodeでDev ContainerのXdebugが起動しない原因を特定した

Posted at

開発環境
・PHP v8系
・Docker v 25.0.2
・Dev Containers v0.354.0
・VSCode Version: 1.88.1

Dev ContainerでDockerのコンテナにremote接続し、コードのエラーを確認する作業の中で
あるphpファイルの変数$cartをDEBUG CONSOLEに入力しても

Cannot evaluate code without a connection

「接続されていないからコードを評価できない」と出る。
iniファイルが機能していないぽい。
DockerfileでxdebugのiniファイルをCOPYするよう指示を書いたので確認。

COPY ./docker/app/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini. 

だが、コンテナ内のディレクトリ調べたらconf.dの中にxdebug.iniが入ってない。
(php.iniも)

Dockerfileが読み込まれていないのが原因。
テーブル消えるのは心許ないがDockerfileを更新するべく

$docker-compose up --build

(コンテナを作り直し)

すると

=> ERROR [app stage-0 3/7] RUN apt update     && apt install -y apache2     && docker-php-ext-install mysqli mbstring zip    && pecl inst 
configure: error: Package requirements (oniguruma) were not met:

onigurumaの件、インストールすべきパッケージがmbstringではなく libonig-devらしい
https://qiita.com/June8715/items/1df5958b95c1ff2d4c1b

ライブラリはmbstringではなくlibonigが必要とのこと。


libonig:マルチバイト文字を含む文字列を処理するライブラリ。php7.4.0以前はmbstringだったが、以降はlibonigがスタンダードになった模様。https://github.com/docker-library/php/issues/880

なのでDockerfileを書き換え

RUN apt-get update \
    && apt-get install -y apache2 \
    && docker-php-ext-install mysqli mbstring zip\
    && pecl install xdebug \
    && docker-php-ext-enable xdebug

RUN apt-get update \
    && apt-get install -y apache2 libonig-dev\
    && docker-php-ext-install mysqli zip\
    && pecl install xdebug \
    && docker-php-ext-enable xdebug

そしてふたたびコンテナをリビルドかけると

configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

と。
libzip-devが必要とのことで
追記して再度実行。


libzip:zip処理のライブラリ。

 ✔ Container msr-db-1   Recreated                                                                                                            0.1s 
 ✔ Container msr-app-1  Recreated

リビルド完了。

リモート接続して
iniファイルの所在を確認すると

:/usr/local/etc/php# ls -a
.  ..  conf.d  php.ini  php.ini-development  php.ini-production

:/usr/local/etc/php/conf.d# ls -a
.  ..  docker-php-ext-mysqli.ini  docker-php-ext-sodium.ini  docker-php-ext-xdebug.ini  docker-php-ext-zip.ini  xdebug.ini

コンテナ内にiniファイルが無事にCOPYされていた。
xdebugの動作も確認完了。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?