> 백엔드 개발 > PHP 문제 > PHP의 디버깅 방법은 무엇입니까?

PHP의 디버깅 방법은 무엇입니까?

青灯夜游
풀어 주다: 2023-03-15 12:28:02
원래의
10255명이 탐색했습니다.

PHP의 디버깅 방법은 다음과 같습니다. 1. PHP 코드에 echo, var_dump, print_r 및 종료 문을 추가하고 디버깅을 위해 브라우저를 통해 정보를 인쇄합니다. 2. 디버깅을 위해 Xdebug를 사용합니다. 3. 콘솔 터미널을 통해 디버그합니다.

PHP의 디버깅 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에 일반적으로 사용되는 디버깅 방법

브라우저에서 정보를 인쇄하여 디버그

방법

echo, var_dump, print_r을 추가하고 코드를 종료하고 브라우저에서 출력을 확인하세요.

장점과 단점

장점:

  • 간단하고 사용하기 쉬우며, 플러그인을 설치할 필요가 없습니다.
  • 직접 작성한 코드나 친숙한 프레임워크의 경우 이렇게 사용할 수 있습니다

단점:

  • 다중 브랜치 로직의 경우 코드를 많이 추가하거나 여러 번 시도해야 합니다.
  • 익숙한 로직의 경우 전체 실행 과정을 반영할 수 없습니다.
  • 프로젝트에 디버깅 문을 남길 수 있습니다
  • 단일 단계 실행이 불가능합니다

Tips

디버깅할 때 출력 변수의 형식을 지정하기 위해 자체 ​​덤프( ) 프로젝트 코드> 함수에 있습니다. Composer를 사용하면 symfony/var-dumper 패키지의 dump() 함수를 전역적으로 설치할 수 있으므로 프로젝트를 수정하지 않고도 모든 프로젝트에서 사용할 수 있습니다. 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 是 IDE 中安装的插件,使用 DBGP 协议通信。PHP 运行脚本时,通过 Xdebug 插件向 IDE 发送调试信息,并接收 IDE 发过来的控制信号。

需要为 PHP 安装并开启 Xdebug,然后设置 IDE 的 Xdebug 插件,使二者可以通信。

优缺点

  • 支持单步调试和任意变量值的获取
  • 配置复杂,需要 IDE 安装插件
  • 支持跟浏览器的配合,需要请求中携带 XDEBUG_SESSION_START 参数

Web App 调试

对于 web 应用,要开启 Xdebug 调试模式,必须在浏览器发送的请求中添加额外的标志。可以在 GET/POST/Cookie 参数中添加 XDEBUG_SESSION_START=session_name,这样 Xdebug 就明白这个请求需要调试,去连接 IDE。

但每次手工设置也很麻烦,有两种方式简化操作:

  • 使用 IDE 提供的方式。对于 PhpStorm,参考 Debugging PHP Web Applications with Run Debug Configurations。使用时需要配置好 IDE 中的 Web Server,然后设置一个 PHP Web Application,点击 Debug 按钮开始调试,这时 IDE会自动打开浏览器并输好网址,并添加 XDEBUG_SESSION_START=session_name
  • 使用浏览器插件,打开插件的调试开关后,插件可以自动在请求中带上对应的 Cookie。对于 Chrome 可以安装 Xdebug helper。

通过 console 终端进行调试(CLI 方式)

对于非 web 应用,例如定时任务或单元测试,可以直接在控制台进行调试。

PhpStorm 中通过 Alt+F12 快捷键打开命令行终端。但是因为 IDE 中只能显示一个终端,在开启调试后的调试终端会覆盖命令行终端,所以还是单独开一个命令行终端吧(Windows 下可以使用 DOS 窗口或 PowerShell)。

方法及原理

web 应用通过 GET/POST/Cookie 参数标志调试请求,而非 web 应用则通过在命令行终端设置环境变量来开启调试。

两步:

  • 设置环境变量 XDEBUG_CONFIG="idekey=session_name",这个 idekey 需要跟 php.ini
  • symfony/var-dumper 패키지를 전역적으로 설치합니다.
    기본적으로 ${HOME}/.config/composer 디렉터리에 설치됩니다.
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
로그인 후 복사
로그인 후 복사

PHP의 디버깅 방법은 무엇입니까? php.ini 파일 수정, PHP 코드를 실행하기 전에 지정된 파일 포함

export XDEBUG_CONFIG="idekey=session_name" // 设置环境变量
echo $XDEBUG_CONFIG // 查看环境变量
unset XDEBUG_CONFIG // 删除环境变量
로그인 후 복사
로그인 후 복사

디버깅을 위해 Xdebug 사용🎜🎜🎜🎜XDebug는 C/S 구조입니다. 클라이언트는 PHP에 설치된 Xdebug이고, 서버는 IDE에 설치된 플러그인이며 DBGP 프로토콜을 사용하여 통신합니다. PHP는 스크립트를 실행할 때 Xdebug 플러그인을 통해 디버깅 정보를 IDE로 보내고 IDE로부터 제어 신호를 받습니다. 🎜🎜PHP용 Xdebug를 설치하고 활성화한 다음 둘이 통신할 수 있도록 IDE의 Xdebug 플러그인을 설정해야 합니다. 🎜🎜🎜장점 및 단점🎜🎜🎜🎜단일 단계 디버깅 및 임의 변수 값 획득 지원 ​​🎜🎜복잡한 구성, 플러그인 설치를 위해 IDE 필요 🎜🎜브라우저와의 협력 지원, 요청에 <코드를 전달해야 함 >XDEBUG_SESSION_START 매개변수 🎜🎜🎜🎜웹 앱 디버깅🎜🎜🎜웹 애플리케이션의 경우 Xdebug 디버깅 모드를 활성화하려면 브라우저에서 보낸 요청에 추가 플래그를 추가해야 합니다. GET/POST/Cookie 매개변수에 XDEBUG_SESSION_START=session_name을 추가하면 Xdebug가 이 요청을 디버깅해야 한다는 것을 이해하고 IDE에 연결할 수 있습니다. 🎜🎜하지만 매번 수동으로 설정하는 것도 귀찮습니다. 작업을 단순화하는 두 가지 방법이 있습니다. 🎜🎜🎜IDE에서 제공하는 방법을 사용하세요. PhpStorm의 경우 디버그 실행 구성을 사용하여 PHP 웹 애플리케이션 디버깅을 참조하세요. 이를 사용할 때 IDE에서 웹 서버를 구성한 다음 PHP 웹 애플리케이션을 설정하고 디버그 버튼을 클릭하여 디버깅을 시작해야 합니다. 그러면 IDE가 자동으로 브라우저를 열고 URL을 입력하고 XDEBUG_SESSION_START를 추가합니다. =세션_이름. 🎜🎜브라우저 플러그인을 사용하세요. 플러그인의 디버깅 스위치를 켜면 플러그인이 자동으로 요청에 해당 쿠키를 가져올 수 있습니다. Chrome의 경우 Xdebug 도우미를 설치할 수 있습니다. 🎜🎜🎜🎜🎜콘솔 터미널을 통한 디버깅(CLI 모드) 🎜🎜🎜🎜예약된 작업이나 단위 테스트 등 웹이 아닌 애플리케이션의 경우 콘솔에서 직접 디버깅할 수 있습니다. 🎜🎜PhpStorm에서 명령줄 터미널을 열려면 Alt+F12 단축키를 사용하세요. 하지만 IDE에서는 하나의 터미널만 표시할 수 있기 때문에 디버깅을 켠 후 디버깅 터미널이 명령줄 터미널을 덮게 되므로 별도의 명령줄 터미널을 여는 것이 좋습니다(Windows에서는 DOS 창이나 PowerShell을 사용할 수 있습니다) ). 🎜🎜🎜방법 및 원리🎜🎜🎜웹 애플리케이션은 GET/POST/Cookie 매개변수 플래그를 통해 요청을 디버그하는 반면 웹이 아닌 애플리케이션은 명령줄 터미널에서 환경 변수를 설정하여 디버깅을 활성화합니다. 🎜🎜2단계: 🎜🎜🎜환경 변수 XDEBUG_CONFIG="idekey=session_name"를 설정합니다. 이 idekey는 php.ini<의 Xdebug 섹션에 설정된 idekey와 동일해야 합니다. /코드>. 🎜🎜명령줄 터미널에서 스크립트를 실행하세요. 실행되면 IDE의 디버그 터미널이 호출되어 단일 단계 디버깅이 가능하고 출력 결과가 실시간으로 명령줄 터미널에 표시됩니다. 🎜🎜🎜🎜🎜🎜IDE는 일반적으로 PHPStorm의 경우 PhpStorm을 사용하여 PHP CLI 스크립트 디버깅을 참조할 수 있습니다. 🎜🎜IDE를 통해 디버깅을 시작한 후 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의 디버깅 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿