현재 위치: > 최신 기사 목록> Docker 또는 Virtual Machine 환경에서 mysqli :: 디버그 사용을위한 팁

Docker 또는 Virtual Machine 환경에서 mysqli :: 디버그 사용을위한 팁

M66 2025-06-01

PHP 개발에서 mysqli :: debug ()는 거의 알려지지 않았지만 매우 유용한 기능입니다. 특히 복잡한 데이터베이스 연결 또는 쿼리 문제를 처리 할 때 MySQLI 확장의 내부 실행을 디버깅하는 데 사용할 수 있습니다.

이 기사는 Docker 또는 Virtual Machine 환경에서 mysqli :: debug ()를 활성화하고 사용하여 디버깅 효율성을 향상시키는 방법을 설명합니다.

1. mysqli :: debug () 란 무엇입니까?

mysqli :: debug () 는 PHP MySQLI Extension에서 제공하는 디버깅 도구입니다. 그 기능은 MySQLI의 디버깅 정보를 지정된 파일에 출력하는 것입니다. 표준 출력 또는 브라우저로 출력되지 않지만 서버의 파일을 로그에 기록합니다.

통화 방법은 매우 간단합니다.

 mysqli::debug("d:t:o,/tmp/client.trace");

매개 변수 "d : t : o,/tmp/client.trace" 의 의미는 다음과 같습니다.

  • D : 디버그 정보;

  • T : 스레드 정보;

  • O : 파일 출력;

  • /tmp/client.trace : 출력 파일 경로.

참고 :이 함수를 사용하기 전에 MySQL 클라이언트 라이브러리에 대한 디버깅 지원을 활성화해야합니다. 그렇지 않으면이 기능 호출이 유효하지 않습니다.

2. Docker 또는 Virtual Machine에서 디버깅 기능 활성화

Docker 컨테이너 또는 가상 머신 에서이 기능을 사용하는 경우 두 가지 전제 조건에주의를 기울여야합니다.

  1. PHP는 CLI 또는 FPM 모드로 실행해야하며 MySQLND 드라이버를 활성화해야합니다.

  2. 컨테이너 또는 가상 머신의 PHP는 디버그 지원으로 컴파일해야합니다.

1. PHP가 디버깅 기능을 지원하는지 확인하십시오

PHP가 MySQLI 디버깅을 지원하는지 확인하려면 다음 명령을 실행하십시오.

 php -i | grep 'Client API version'

결과에 MySQLND가 포함 된 경우 지원을 의미합니다. 그렇지 않으면 PHP를 다시 컴파일하거나 MySQLND를 포함하는 PHP 이미지를 설치해야 할 수도 있습니다.

2. Dockerfile 예제 (MySQLI 디버그 활성화)

Docker를 사용하는 경우 다음과 같이 Dockerfile에서 구성 할 수 있습니다.

 FROM php:8.2-cli

RUN docker-php-ext-install mysqli \
    && echo "mysqli.allow_local_infile=On" >> /usr/local/etc/php/php.ini

# 선택 과목:마운트 디버그 파일 경로
VOLUME /tmp

그런 다음 PHP에 다음 코드 테스트를 작성하십시오.

 <?php
mysqli::debug("d:t:o,/tmp/client.trace");

$mysqli = new mysqli("db.m66.net", "root", "password", "test");

if ($mysqli->connect_errno) {
    echo "연결이 실패했습니다: " . $mysqli->connect_error;
    exit();
}

$result = $mysqli->query("SELECT * FROM users");

while ($row = $result->fetch_assoc()) {
    print_r($row);
}

$mysqli->close();

이 스크립트를 실행하면 /tmp/client.thrace 파일에서 디버깅 정보를 볼 수 있습니다.

3. 가상 기계 환경 설명 (예 : Vagrant 사용)

가상 머신에서의 사용은 Native 또는 Docker를 사용하는 것과 다르지 않습니다. 유일한 것은 PHP 프로세스가 설정 한 로그 파일의 경로에 /TMP 또는 지정된 마운트 디렉토리와 같이 쓰는 권한이 있어야한다는 것입니다.

3. 디버깅 로그 샘플

디버그 로그 컨텐츠는 대략 다음과 같습니다 (발췌) :

 >mysql_real_connect
>mysql_send_query
<mysql_read_query_result
...

이 로그를 통해 연결 고장의 이유, 느린 쿼리 실행 및 DNS 구성 오류로 인한 지연을 찾을 수도 있습니다.

4. 안전 권장 사항

프로덕션 환경에서는 데이터베이스 연결 정보 및 쿼리 컨텐츠와 같은 민감한 데이터가 유출되므로 MySQLI :: Debug ()를 활성화 하지 않아야 합니다. 개발 또는 테스트 환경에서만 권장되며 생성 된 로그 파일을 정리하는 데주의하십시오.

5. 요약

Docker 또는 Virtual Machine 환경에서 mysqli :: debug ()를 사용하면 복잡하지 않으며 키는 다음과 같습니다.

  • PHP가 MySQLND를 사용하는지 확인하십시오.

  • 컨테이너 또는 가상 머신의 로그 경로에 대한 권한을 설정하십시오.

  • 디버깅이 완료된 후 제 시간에 로그를 비활성화하거나 삭제하십시오.

이 도구를 합리적으로 사용하면 데이터베이스 문제를 해결할 때 더 효율적이고 정확할 수 있습니다.

유사한 디버깅 요구 사항이 있으면 시도해 볼 수도 있습니다!