質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

1473閲覧

Docker vscode php をデバッグ実行できるようになりたい

hinoue

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/12/27 04:20

前提・実現したいこと

開発環境がwindows10proで本番環境がlinuxのため、dockerを利用して開発環境を構築しようと考えました。
vscode上でphpのデバッグ環境を構築したいです。(xdebug使用)
既にローカル開発環境ではdebug環境を構築しています。

https://qiita.com/suzu12/items/35435dd83c247cb9bd66
上記サイトを参考に
Remote Developmentの参照機能でコンテナ内には入れているようですが、
デバッグをステップ実行することができません。

フォルダ構成

. ├── .devcontainer │ └── devcontainer.json// 後述 │ ├── .vscode │   └── launch.json // 後述 │ ├── docker │ ├── Dockerfile// 後述 │ ├── xdebug.ini// 後述 │ ├── php_xdebug.dll// 後述 │     └── php.ini// 後述 ├── docker-compose.yml// 後述 │ └── sample_test.php // デバッグテスト用のファイル

launch.json

{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9000, //"stopOnEntry": true, //"log": true }, { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "${file}", "cwd": "${fileDirname}", "port": 9000, //"runtimeExecutable": "C:\xampp\php\php.exe" }, { "name": "XDebug on docker", "type": "php", "request": "launch", "port": 9003, "stopOnEntry": true, "pathMappings": { "/var/www/html": "${workspaceRoot}/" } } ] }

devcontainer.json

{ "name": "php_xdebug_app", // お好きな名前 "dockerComposeFile": [ // docker-compose.ymlのパスを記載 "../docker-compose.yml", ], "service": "php", // docker-compose.yml に記載しているサービス名で起動したいコンテナ "workspaceFolder": "/var/www/html", // 作業するパス "forwardPorts": [ // xdebug.iniに書いたport番号と同じにする 9003 ], "extensions": [ // コンテナ内で使用したい拡張機能、お好みに合わせて設定してください。 "felixfbecker.php-debug", "coenraads.bracket-pair-colorizer-2", "oderwat.indent-rainbow", "streetsidesoftware.code-spell-checker", "mosapride.zenkaku" ] }

Dockerfile

FROM php:7.4-fpm WORKDIR /var/www/html RUN apt-get update \ && apt-get install -y libonig-dev libzip-dev unzip \ # xdebug install && pecl install xdebug \ && docker-php-ext-enable xdebug COPY --from=composer:2 /usr/bin/composer /usr/bin/composer COPY ./app /var/www/html COPY ./docker/php.ini /usr/local/etc/php/php.ini COPY ./docker/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini COPY ./docker/php_xdebug.dll /usr/local/etc/php/php_xdebug.dll #ローカルで使用しているdllをdockerコンテナ内にコピー?

php.ini

[Syslog] define_syslog_variables=Off [Session] define_syslog_variables=Off [Date] date.timezone=Europe/Berlin [MySQL] mysql.allow_local_infile=On mysql.allow_persistent=On mysql.cache_size=2000 mysql.max_persistent=-1 mysql.max_link=-1 mysql.default_port=3306 mysql.default_socket="MySQL" mysql.connect_timeout=3 mysql.trace_mode=Off [Sybase-CT] sybct.allow_persistent=On sybct.max_persistent=-1 sybct.max_links=-1 sybct.min_server_severity=10 sybct.min_client_severity=10 [MSSQL] mssql.allow_persistent=On mssql.max_persistent=-1 mssql.max_links=-1 mssql.min_error_severity=10 mssql.min_message_severity=10 mssql.compatability_mode=Off mssql.secure_connection=Off display_errors = On display_startup_errors = On max_execution_time = 30 session.gc_divisor = 1000 session.sid_bits_per_character = 5 output_buffering = 4096 memory_limit = 128M upload_max_filesize = 64M post_max_size = 64M max_input_vars = 1000 log_errors = On error_log = /dev/stderr error_reporting = E_ALL expose_php = On zend.exception_ignore_args = Off

xdebug.ini

xdebug.client_host = host.docker.internal xdebug.start_with_request = yes xdebug.mode = debug # port 番号はデフォルトで9003番ですがわかりやすいように明示的に書いています。9003ではなくても空いているポートなら大丈夫です。 # 後述する .devcontainer/devcontainer.json に書く port と同じにしてください。 xdebug.client_port = 9003 xdebug.log = /var/log/xdebug.log xdebug.discover_client_host = 1 zend_extension = "ローカルからのパス \docker\php_xdebug.dll"

docker-compose.yml

version: "3.8" services: php: build: context: . dockerfile: docker/Dockerfile volumes: - ./app:/var/www/html ports: - "8000:80" command: sleep infinity

試したこと

①xdebug 3対応
②dllの問題?と思い、xdebug.iniの中にローカルで使用しているddlを追加したりしています。

補足情報(FW/ツールのバージョンなど)

・ Xdebug v3.0.4
・php 8.0.8
・win10 pro
・docker 20.10.11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問