Vessel에서 Laavel의 단계 실행을 멈출 수 없으면 Xdebug 버전을 확인하십시오

개요


Vessel의 PHP 환경에 설치된 Xdebug의 주요 버전 업그레이드 때문에 원격 패키지의 절차 실행을 멈출 수 없습니다.
단계를 수행하려면 Vessel 설정을 Xdebug3에 해당하는 내용으로 변경해야 합니다.

이른바 Vessel


Vessel은 Docker를 사용하는 Laavel의 응용 개발 환경입니다.
Vessel - Docker dev environments for Laravel
https://vessel.shippingdocker.com/

Xdebug


PHP 디버깅용 확장 모듈
Xdebug - Debugger and Profiler Tool for PHP
https://xdebug.org/

단계 실행을 중지할 수 없는 이유

  • Vessel은 환경을 만들 때 PECL을 통해 최신 버전의 Xdebug를 설치했다.
  • Xdebug3은 2020년 11월 25일에 발행되었다.
  • Xdebug3에서 php까지.ini가 지정한 원격 디버깅의 설정이 변경되었지만, Vessel은 Xdebug2의 설정이 되었습니다.
  • Xdebug3 버전 이후에 구축된 Vessel의 개발 환경은 설정을 변경하지 않으면 Xdebug에서 원격 디버깅을 할 수 없습니다.
  • Xdebug3의 변경 사항


    Upgrading from Xdebug 2 to 3
    https://xdebug.org/docs/upgrade_guide
    요점.

    1. 단계를 효과적으로 수행하도록 설정이 바뀌었다


    Xdebug 2 : xdebug.remote_enable = 1Xdebug 3 : xdebug.mode=debug

    2. Xdebug에서 연결된 주소의 설정 항목이 변경되었습니다.


    Xdebug 2 : xdebug.remote_host = ホスト名/IPアドレスXdebug 3 : xdebug.client_host = ホスト名/IPアドレス

    3. Xdebug에서 연결된 포트의 설정 항목과 포트 번호가 변경되었습니다.


    Xdebug 2 : xdebug.remote_port = 9000Xdebug 3 : xdebug.client_port = 9003

    Xdebug3의 개념 설정


    모든 기능이 설정에서 유효화된 Xdebug2는 Xdebug3에서 '모드' 를 지정해서 목적 상태를 설정합니다.이 모드는 xdebug.mode입니다.
    그리고 remote_*의 설정 항목은 client_*이 되었다.
    Xdebug2에서 수중에 있는 개발 환경은 Xdebug에서 본'원격'이라는 뜻이다
    Xdebug3은 Xdebug이 "서버"에서 실행되고 개발되는 로컬 환경이 "클라이언트"라는 뜻이죠.
    나는 직관적이고 이해하기 쉽다고 생각하지만, 호환성은...

    Vessel 설정을 Xdebug3에 맞추려면


    Vessel의 개발 환경 만들기


    우선 일반적인 절차에 따라 Vessel의 개발 환경을 제작한다.
    ↓ 공식 사이트의 절차는 다음과 같다
    Getting Started
    https://vessel.shippingdocker.com/docs/get-started/
    개발 환경이 완성되면 응용이 제대로 작동하는지 확인한다.

    Xdebug 설정 변경


    설정을 수정할 파일

    docker/app/xdebug.ini
    % tree
    .
    ├── LICENSE
    ├── README.md
    ├── app
    ├── artisan
    ├── bootstrap
    ├── composer.json
    ├── composer.lock
    ├── config
    ├── database
    ├── docker
    │   ├── app
    │   │   ├── Dockerfile
    │   │   ├── default
    │   │   ├── h5bp
    │   │   ├── start-container
    │   │   ├── supervisord.conf
    │   │   ├── vessel.ini
    │   │   └── xdebug.ini          ← このファイルを編集する
    │   ├── mysql
    │   │   ├── conf.d
    │   │   └── logs
    │   └── node
    │       └── Dockerfile
    ├── docker-compose.yml
    ├── package.json
    ├── phpunit.xml
    ├── public
    ├── resources
    ├── routes
    ├── server.php
    ├── storage
    ├── tests
    ├── vendor
    ├── vessel
    └── webpack.mix.js
    

    Xdebug3 설정


    zend_extension=xdebug.so
    xdebug.remote_enable=1
    xdebug.remote_handler=dbgp
    xdebug.remote_port=9000
    xdebug.remote_autostart=1
    xdebug.remote_connect_back=0
    xdebug.idekey=docker
    xdebug.remote_host=192.168.1.2
    xdebug.max_nesting_level = 500
    ; ↑ XDebug 2 の設定
    
    ; XDebug 3 の設定 ※ここを追加する
    xdebug.mode = debug
    xdebug.client_host = host.docker.internal ← コンテナから見たホストのIPアドレス
    ; xdebug.client_port = 9000 ← XDebug 2 と同じポート 9000 に接続する場合はここで指定
    
    host.docker.internal는 용기에서 본 호스트의 IP 주소를 자동으로 해결하는 설정입니다.
    https://docs.docker.jp/docker-for-mac/networking.html

    변경 사항을 반영하는 설정

    xdebug.ini의 설정을 반영하기 위해 용기를 구축하고 다시 시작합니다.
    ./vessel stop
    ./vessel build
    ./vessel start
    

    IDE를 통해 필요한 설정


    Xdebug3에 연결된 포트가 9000에서 9003로 변경되었기 때문에 IDE 측에서 기다리는 포트 번호도 9003로 미리 변경되었습니다.
    또는 xdebug.ini에서 Xdebug3의 연결 포트를 9000로 변경할 수 있습니다.

    PhpStorp


    Configure Xdebug - PhpStorm
    https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html

    Visual Studio


    디버그 구성 파일의 설정 예
    https://github.com/aibax/vessel-xdebug3-sample/blob/main/.vscode/launch.json

    참고 자료


    이 일에 관해서 나는 견본 코드를 썼다
    https://github.com/aibax/vessel-xdebug3-sample

    좋은 웹페이지 즐겨찾기