수색…
덤프 변수
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);