PHP 프로그램을 디버깅하는 다양한 방법 소개_php 기술
디버깅의 정의: 프로그램이 제대로 작동할 수 있도록 특정 방법을 사용하여 프로그램의 결함 수를 찾아 줄이고 줄입니다.
다음은 PHP 프로그램을 디버깅하는 방법에 대한 몇 가지 경험입니다.
1. PHP 자체 디버깅 기능
1. 오류 보고 기능 내장
두 명사: 개발 환경은 개발자가 개발하고 디버깅하는 환경이고, 프로덕션 환경은 최종 고객이 사용하는 온라인 환경입니다.
개발 환경과 프로덕션 환경에서는 오류 보고 기능을 별도로 설정해야 합니다.
(1) 개발 환경
개발 환경에서 오류 보고를 활성화해야 합니다. 다음은 php.ini의 구성 항목과 설명입니다.
; 이 지시문은 오류 보고 수준을 설정합니다.
; 개발 값: E_ALL | E_STRICT (코딩 표준을 포함한 모든 오류, 경고 및 알림을 표시합니다.)
error_reporting = E_ALL | E_STRICT
이 지시문은 PHP가 오류를 출력할지 여부와 위치를 제어합니다.
; 알림 및 경고도 개발 중에 매우 유용합니다.
; 개발 가치: On
display_errors = 켜짐
이렇게 하면 개발 과정에서 최대한 빨리 오류를 발견할 수 있습니다.
낮은 수준의 오류인 "주의 사항: 정의되지 않은 변수: a in E:phpspacetest.php on line 14"이더라도 정의되지 않은 변수를 사용하면 버그가 숨겨지는 경우가 많습니다.
오픈 소스 클래스 라이브러리를 도입했는데 낮은 수준의 오류가 많이 발생하면 어떻게 될까요? 일반적으로 코드 품질이 좋은 클래스 라이브러리는 "알림" 수준 오류를 보고하지 않습니다. 따라서 이는 클래스 라이브러리의 품질을 식별하는 방법이기도 합니다.
(2) 제작환경
프로덕션 환경에서는 오류를 직접 출력할 수 없으며 로그에 기록합니다. php.ini의 구성 항목과 설명은 다음과 같습니다.
; 프로덕션 환경에서는 매우 위험할 수 있습니다.
;
보다는 프로덕션 서버에 오류를 기록하는 것이 좋습니다. ; STDOUT으로 오류가 전송되었습니다.
display_errors = 꺼짐
; 오류를 표시하는 것 외에도 PHP는
과 같은 위치에 오류를 기록할 수도 있습니다.
; 서버별 로그, STDERR 또는 error_log에 의해 지정된 위치
; 아래에 있는 지시어는 프로덕션에 표시되어서는 안 됩니다.
; 서버는 여전히 모니터링되어야 하며 로깅은 이를 수행하는 좋은 방법입니다.
; 생산 가치: 켜짐
log_errors = 켜짐
; 지정된 파일에 오류를 기록합니다.
error_log = /path/to/php_error.log
물론, 로그를 파일에 쓰는 것은 선택 사항일 뿐이며, 다른 구성도 있으니 매뉴얼을 참고하세요.
프로덕션 환경에서는 중단점, 인쇄 등을 수행할 수 없으므로 로그가 좋은 선택입니다.
2. 기타 언어 기능의 사용
(1) 오류 제어 연산자 "@"를 덜 자주 사용하세요
이 기능은 PHP 표현식 앞에 "@"을 배치하는 것이며 표현식으로 인해 생성될 수 있는 모든 오류 메시지는 무시됩니다.
이 표현식에 결함이 발생하면 PHP 출력에 오류가 표시되지 않으므로 디버깅이 더 어려워집니다. 그러니 가능하다면 사용하지 마세요.
(2) 일부 기능에는 자체 디버그 기능이 있습니다
예를 들어 다음 코드 줄은 다음과 같습니다.
$fp = fsockopen(“www.example.com”, 80, $errno, $errstr, 30);
개발자는 디버깅 중에 $fp가 비어 있고 연결이 실패함을 확인했습니다. 이 줄에 문제가 있는데 연결이 실패하는 이유는 무엇입니까?
이 함수는 PHP와 함께 제공되며 심층적으로 디버깅할 수 없습니다. 따라서 일반적으로 이러한 기능(주로 네트워크 통신 유형)은 자체 디버깅 매개변수인 $errno 및 $errstr을 제공합니다. 다음을 추가할 수 있습니다.
if (!$fp) echo “$errstr ($errno)
n”;
연결이 실패한 이유를 확인할 수 있습니다.
이러한 함수는 fsockopen, pfsockopen, stream_socket_server, stream_socket_client 등입니다.
mysql_errno,socket_last_error,socket_strerror 등과 같이 함수를 디버깅하는 데 사용되는 일부 함수도 있습니다.
이를 이해하고 마주칠 때마다 활용하면 됩니다.
2. 디버깅 도구 소개
복잡한 문제가 발생하면 디버깅 도구를 사용할 수 있습니다. 보다 성숙한 것에는 Xdebug와 ZendDebugger가 포함됩니다.
Xdebug를 예로 들면 인쇄 출력 스타일 및 배열 수준 제어, 스택 오류 추적, 함수 호출 추적, 코드 실행 범위 분석, 프로그램 프로파일링 및 원격 디버깅이 가능합니다. 자세한 내용은 http://xdebug.org/docs/를 참조하세요.
Xdebug의 처음 두 가지 기능은 PHP의 원래 디버깅 기능을 개선하여 디버깅을 더욱 편리하게 만들어줍니다.
디버깅할 수 없는 복잡한 문제는 비즈니스 문제일 수 있습니다. 비즈니스 로직 디버깅에 대해서도 아래에서 설명합니다.
3. 비즈니스 로직 오류 디버깅
PHP 스크립트가 오류 없이 실행되면 문법 오류가 없다고 말할 수 있을 뿐 비즈니스 로직에 오류가 없다는 의미는 아닙니다.
많은 비즈니스 로직 오류는 구문 오류에 반영되지 않지만 디버깅 아이디어는 PHP에 포함된 디버깅 기능과 유사합니다.
몇 가지 방법을 소개합니다.
1.가장 기본적인 디버깅 방법
먼저 두 가지를 결정합니다. 프로그램의 예상 결과와 기대에 미치지 못하는 프로그램의 현재 결과입니다.
두 결과와 관련된 코드 조각을 찾으세요.
이 코드 조각을 읽고 "육안으로" 오류를 찾아보세요.
찾을 수 없으면 일부 주요 변수를 출력하고 해당 값이 올바른지 확인하여 오류가 발생한 위치를 확인해야 합니다.
여러 번 시도한 후에는 결국 오류가 발생한 지점을 확인할 수 있습니다.
Xdebug와 같은 도구를 사용하여 변수 값의 변경 사항을 보거나 디버깅을 위한 중단점을 설정할 수도 있습니다.
2. 녹화작업 로그
일부 복잡하거나 특수한 비즈니스의 경우 위의 방법이 적합하지 않습니다. 예를 들어 중단할 수 없는 백그라운드 실행 스크립트가 있습니다. 이러한 경우에는 실행 로그를 기록하는 것이 더 적절합니다.
로그에 보관할 항목을 선택하세요. 비즈니스에서 더 중요한 항목 외에도 일반적으로 네트워크 연결 및 통신, 시스템 권한 문제 등 오류가 발생할 가능성이 있는 영역이 있습니다.
3. 단위 테스트
첫번째 포인트처럼 디버깅 후 테스트 코드를 버리지 말고 코드로 테스트해보세요. 테스트 중심 개발.
이 주제는 비교적 크지만 여기서 언급하는 것이 적절합니다. 관심 있는 학생들은 더 많은 것을 배울 수 있습니다.
4. 비기능 오류 디버깅
프로그램 중단을 일으키는 메모리 오버플로, 프로그램 속도 저하를 일으키는 효율성 문제, 무한 루프 등과 같은 비기능적 오류.
이러한 문제의 경우 "육안"으로 코드를 확인하는 것은 너무 비효율적입니다.
그러므로 디버깅 도구를 사용하여 프로그램 프로파일링을 수행하고 프로그램의 병목 현상을 확인할 수 있습니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

PHP 로깅은 웹 애플리케이션을 모니터링하고 디버깅하고 중요한 이벤트, 오류 및 런타임 동작을 캡처하는 데 필수적입니다. 시스템 성능에 대한 귀중한 통찰력을 제공하고 문제를 식별하며 더 빠른 문제 해결을 지원합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

Storage :: Laravel Framework의 다운로드 방법은 파일 스토리지의 추상화를 관리하는 동안 파일 다운로드를 안전하게 처리하기위한 간결한 API를 제공합니다. 다음은 예제 컨트롤러에서 Storage :: download ()를 사용하는 예입니다.

Laravel의 서비스 컨테이너 및 서비스 제공 업체는 아키텍처의 기본입니다. 이 기사는 서비스 컨테이너, 세부 정보 서비스 제공 업체 생성, 등록 및 예제와 함께 실질적인 사용을 보여줍니다. 우리는 ove로 시작합니다
