이전에 Java를 배울 때 IDE의 콘솔 콘솔을 사용하여 디버깅했습니다.나중에 PHP를 하다가 코드 안에 echo와 exit가 들어가 있다가 브라우저에서 새로 고쳐서 효과를 보고 원스텝 디버깅, 변수값 보기 등 자주 쓰던 디버깅 방식을 잊어버렸다.사실 IDE 통합 콘솔을 통해 디버깅을 하는 것이 더 효율적입니다.
다음 예제는 Windows에서 LNMP 환경을 기반으로 합니다. 여기에서 설치할 수 있습니다.
상용 디버깅 방식
브라우저에서 정보를 출력하여 디버깅하다
방법
브라우저에서 출력을 보려면 코드에 echo, var_dump, print_r, exit를 추가합니다.
장단점
장점:
간단, 사용하기 편리, 플러그인 설치 불필요
자신이 쓴 코드나 익숙한 틀에서는 이렇게 쓸 수 있다.
단점:
멀티 브랜치 로직의 경우 코드를 많이 넣거나 여러 번 시도해야 합니다
익숙하지 않은 논리에 대해서는 완전한 실행 프로세스를 반영할 수 없다.
프로젝트에 디버깅 문구를 빠뜨릴 수 있음
한 번에 실행할 수 없음
기교
디버깅할 때 출력 변수를 포맷하기 위해서 dump() 함수를 프로젝트에 구현해야 합니다.Composer를 사용하면 symfony/var-dumper 패키지의 dump() 함수를 전역적으로 설치하여 항목을 변경하지 않고도 모든 항목을 사용할 수 있습니다.
전역 설치 symfony/var-dumper 패키지:
기본적으로 ${HOME}/.config/composer 디렉터리에 설치됩니다
composer global require symfony/var-dumper
php.ini 파일을 수정하여 PHP 코드를 실행하기 전에 include에서 지정한 파일
auto_prepend_file = ${HOME}/.config/composer/vendor/autoload.php
Xdebug를 사용하여 디버깅하기
XDebug는 C/S 구조입니다.여기서 Client는 PHP에 설치된 Xdebug이고 Server는 DBGP 프로토콜 통신을 사용하는 IDE에 설치된 플러그인입니다.PHP가 스크립트를 실행할 때 Xdebug 플러그인을 통해 IDE에 디버깅 정보를 보내고 IDE로부터 제어 신호를 받습니다.
PHP를 위해 X를 설치하고 켜야 함debug, IDE의 Xdebug 플러그인을 설정하여 통신할 수 있도록 합니다.
장단점
단일 단계 디버깅과 임의 변수 값 가져오기 지원
설정이 복잡합니다. IDE 설치 플러그 필요건
브라우저에서 지원, 요청 중휴대용 XDEBUG_SESSION_START 파라미터
웹 앱 디버깅
웹 응용 프로그램의 경우,Xdebug 디버깅 모드를 켜려면 브라우저에서 보낸 요청에 플래그를 추가해야 합니다.XDEBUG_SESSION_START=session_name을 GET/POST/Cookie 인자에 추가할 수 있습니다. Xdebug는 이 요청을 디버깅하고 IDE에 연결할 필요가 있습니다.
매번 손으로 하는 것도 귀찮고조작을 간단하게 하는 두 가지 방법이 있습니다.
IDE 제공자 사용식. PhpStorm의 경우 Debugging PHP Web Applications with Run Debug Configurations를 참조하십시오.사용할 때 IDE의 웹 서버를 설정하고 PHP 웹 응용 프로그램을 설정한 다음 De를 누르십시오버그 버튼이 디버깅을 시작합니다. IDE가 자동으로 브라우징을 엽니다.주소를 입력하고 XDEBUG_SESSION_START=session_name을 추가합니다.
브라우저 플러그인 사용하기, 플러그인 열기위젯의 디버깅스위치가 끝나면 플러그인은 자동으로 해당 쿠키들을 요청 시 지참할 수 있습니다.크롬의 경우 Xdebug helper를 설치할 수 있습니다.
console을 통해서 터미널 디버깅(CLI 방식)
웹이 아닌 응용 프로그램의 경우,예를 들어, 타임 태스크나 유닛 테스트의 경우 콘솔에서 직접 디버깅할 수 있습니다.
PhpStorm 중통Alt+F12 단축키를 지나 명령줄 단자를 엽니다.단, IDE에는 하나의 터미널만 표시되며, 디버깅을 한 디버깅 터미널은 명령줄 터미널을 덮어쓰게 되므로 별도의 명령줄 터미널을 여십시오(윈도우즈에서는 DOS 창이나 PowerShell을 사용할 수 있습니다).
방법 및 원리
웹 응용 프로그램은 GET/POST/Cookie 매개 변수 플래그를 통해 디버깅 요청을 합니다. 웹 응용 프로그램은 명령줄 터미널에서 환경 변수를 설정하여 디버깅을 시작합니다.
2단계:
환경 변수 XDEBUG_CONFIG= "idekey=session_name" 을 설정합니다. 이 idekey는 php.ini의 Xdeb을 따라야 합니다.ug 부분에 설치된 idekey와 같다.
명령줄 터미널에서 스크립트를 실행합니다.실행 시 IDE의 debug 단말을 불러 일으켜서 한 번에 디버깅할 수 있으며 출력 결과는 명령줄 단자에 실시간으로 표시됩니다
IDE는 일반적으로 빠른 동작을 제공하며, PHPStorm에 대해서는 Debugging PHP CLI scripts with PhpStorm을 참조할 수 있다.
IDE를 통해 디버깅을 시작하면 Xdebug 플러그인이 포트를 불러옵니다. (PhpStorm 기본값은 9000이지만, 이것은 PHP-FPM과 충돌합니다.9001), PHP 서버에서 반환된 디버깅 정보를 얻을 수 있습니다
D:\lnmp\php72\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9001 -dxdebug.remote_host=127.0.0.1 D:\lihongfeng\workspace\untitled\index.php
환경 변수 설정, 보기 및 해제
Linux
export XDEBUG_CONFIG="idekey=session_name" //환경 변수 설정
echo $XDEBUG_CONFIG // 환경 변수 보기
unset XDEBUG_CONFIG //환경 변수 삭제
Windows
set XDEBUG_CONFIG="idekey=session_name" // 환경 변수 설정
echo %XDEBUG_CONFIG% //환경 변수 보기
set XDEBUG_CONFIG // 환경 변수 보기
set XDEBUG_CONFIG= //환경 변수 삭제
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP를 사용하여 몇 가지 99 곱셈표를 쓰는 방식 (0) | 2022.07.11 |
---|---|
docker php 환경 구축 웹 프로젝트 실행 (0) | 2022.07.09 |
php 카스로 SSO 싱글 로그인 및 로그아웃 기능 구현 (0) | 2022.07.09 |
자바는 왜 PHP보다 빠릅니까? (0) | 2022.07.09 |
PHP 포니, 포니, 포니 분석편찬 실현 (0) | 2022.07.09 |