수색…


덤프 변수

var_dump 함수를 사용하면 디버깅을 위해 변수의 내용 (유형 및 값)을 덤프 할 수 있습니다.

예:

$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);

산출:

array(6) {
  [0]=>
  float(3.7)
  [1]=>
  string(6) "string"
  [2]=>
  int(10)
  [3]=>
  array(1) {
    ["hello"]=>
    string(5) "world"
  }
  [4]=>
  bool(false)
  [5]=>
  object(DateTime)#1 (3) {
    ["date"]=>
    string(26) "2016-07-24 13:51:07.000000"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(13) "Europe/Berlin"
  }
}

오류 표시

PHP에서 페이지에 런타임 오류를 표시하려면 php.ini 또는 ini_set 함수를 사용하여 display_errors 를 활성화해야합니다.

비트 단위 연산자를 사용하여 결합 된 E_* 상수 를 받아들이는 error_reporting (또는 ini) 함수를 사용하여 표시 할 오류를 선택할 수 있습니다.

PHP는 html_errors 설정에 따라 텍스트 또는 HTML 형식의 오류를 표시 할 수 있습니다.

예:

ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE

trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR

일반 텍스트 출력 : (HTML 형식은 구현에 따라 다릅니다.)

Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7

Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
  thrown in /path/to/file.php on line 8

참고 : php.ini에서 오류보고를 비활성화하고 런타임 중에 활성화하면 런타임 오류가 적용되기 전에 오류가 발생하기 때문에 (예 : 구문 분석 오류) 일부 오류가 표시되지 않습니다.

error_reporting 을 처리하는 일반적인 방법은 개발 중에 E_ALL 상수를 사용하여 완전히 활성화하고 프로덕션 단계에서 display_errors 로 스크립트를 표시하지 않도록 설정하여 스크립트의 내부를 숨기는 것입니다.

phpinfo ()

경고

phpinfo 는 개발 환경에서만 사용되어야합니다. phpinfo 가 포함 된 코드를 프로덕션 환경에 공개하지 마십시오.

소개

말하자면, 특히 버그를 추적 할 때 PHP 환경 (OS, 구성, 버전, 경로, 모듈)을 이해하는 데 유용한 도구가 될 수 있습니다. 그것은 간단한 내장 함수입니다 :

phpinfo();

출력을 사용자 정의 할 수있는 $what 매개 변수가 하나 있습니다. 기본값은 INFO_ALL 이며, 모든 정보를 표시하며, 개발 중에 PHP의 현재 상태를보기 위해 일반적으로 사용됩니다.

비트 연산자와 결합 된 INFO_* 상수 매개 변수를 전달하여 사용자 지정된 목록을 볼 수 있습니다.

당신은 멋지게 형식화 된 자세한 모습을 브라우저에서 실행할 수 있습니다. PHP CLI에서도 작동합니다. PHP CLI에서는 더 쉽게 볼 수있게하기 위해이 less 사용할 수 있습니다.

phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);

이렇게하면 PHP 지시문 ( ini_get ), 환경 ( $_ENV ) 및 미리 정의 된 변수 목록이 표시됩니다.

Xdebug

Xdebug 는 디버깅 및 프로파일 링 기능을 제공하는 PHP 확장 모듈입니다.
DBGp 디버깅 프로토콜을 사용합니다.

이 도구에는 다음과 같은 유용한 기능이 있습니다.

  • 오류시 스택 추적
  • 최대 중첩 레벨 보호 및 시간 추적
  • 변수를 표시하기위한 표준 var_dump() 함수의 유용한 대체
  • 매개 변수와 반환 값을 포함한 모든 함수 호출을 다른 형식의 파일에 기록 할 수 있습니다.
  • 코드 커버리지 분석
  • 프로파일 링 정보
  • 원격 디버깅 (PHP 스크립트 실행과 상호 작용하는 디버거 클라이언트 인터페이스 제공)

보시다시피이 확장은 개발 환경에 완벽하게 적합합니다. 특히 원격 디버깅 기능은 수많은 var_dump없이 php 코드를 디버깅하고 C++ 또는 Java 언어 에서처럼 일반적인 디버깅 프로세스를 사용할 수 있도록 도와줍니다.

보통이 확장 기능의 설치는 매우 간단합니다.

pecl install xdebug # install from pecl/pear

php.ini 파일로 활성화하십시오 :

zend_extension="/usr/local/php/modules/xdebug.so"

더 복잡한 경우에는이 지침을 참조하십시오.

이 도구를 사용할 때 다음을 기억해야합니다.
프로덕션 환경에는 XDebug가 적합하지 않습니다.

phpversion ()

소개

다양한 라이브러리 및 관련 요구 사항을 다루는 경우 현재 PHP 파서 또는 패키지 중 하나의 버전을 알아야 할 때가 있습니다.

이 함수는 하나의 선택적 매개 변수를 확장명 형태로 받아들입니다 : phpversion('extension') . 해당 확장이 설치되어 있으면 함수는 버전 값이 포함 된 문자열을 반환합니다. 그러나, FALSE 가 설치되지 않은 확장자가 리턴됩니다. 확장명이 제공되지 않으면이 함수는 PHP 파서 자체의 버전을 반환합니다.

print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8

print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing

오류보고 (둘 다 사용)

// this sets the configuration option for your environment
ini_set('display_errors', '1');

//-1 will allow all errors to be reported
error_reporting(-1);


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow