PHP 코드를 디버깅하고 싶지만 화면이나 파일에 로그를 인쇄하는 것이 좋습니다.
PHP 코드로 로그를 인쇄하려면 어떻게해야합니까?
일반적인 print
/ printf
콘솔이 아닌 HTML 출력으로 이동하는 것 같습니다.
PHP 코드를 실행하는 Apache 서버가 있습니다.
printf
질문은 많은지지를 얻을 것이다 ...
PHP 코드를 디버깅하고 싶지만 화면이나 파일에 로그를 인쇄하는 것이 좋습니다.
PHP 코드로 로그를 인쇄하려면 어떻게해야합니까?
일반적인 print
/ printf
콘솔이 아닌 HTML 출력으로 이동하는 것 같습니다.
PHP 코드를 실행하는 Apache 서버가 있습니다.
printf
질문은 많은지지를 얻을 것이다 ...
답변:
덜 알려진 트릭은 mod_php가 stderr을 Apache 로그에 매핑한다는 것입니다. 그리고 그것에 대한 스트림이 있으므로 Apache 오류 로그에 file_put_contents('php://stderr', print_r($foo, TRUE))
값을 멋지게 덤프합니다 $foo
.
var_export($foo, true)
대신 사용 하는 것이 좋습니다 . print_r($foo, true)
print_r
Linux를 사용하는 경우 :
file_put_contents('your_log_file', 'your_content');
또는
error_log ('your_content', 3, 'your_log_file');
그런 다음 콘솔에서
tail -f your_log_file
파일에 넣은 마지막 줄이 계속 표시됩니다.
마음의 틀을 바꿔야합니다. 당신은 PHP를 작성하고 있습니다. 콘솔 환경에서는 PHP에서의 디버깅이 수행되지 않습니다.
PHP에는 3 가지 범주의 디버깅 솔루션이 있습니다.
PHP를 익숙한 다른 언어처럼 행동하게 만드는 대신에 그것들을 사용하는 법을 배우십시오.
콘솔에서 디버깅하고 있습니까? PHP 디버깅을위한 다양한 옵션이 있습니다. 빠르고 더러운 디버깅에 사용되는 가장 일반적인 기능은 var_dump 입니다.
var_dump가 대단하고 많은 사람들이 그 모든 것을 수행하지만, 그것을 매끄럽게 만들 수 있는 다른 도구와 기술 이 있습니다.
웹 페이지에서 디버깅 할 때 도움이되는 사항은 <pre> </pre>
덤프 문을 태그로 감싸서 배열과 객체에 적절한 형식을 지정합니다.
즉 :
<div> some html code ....
<a href="<?php $tpl->link;?>">some link to test</a>
</div>
dump $tpl like this:
<pre><?php var_dump($tpl); ?></pre>
마지막으로 오류 처리 디버깅이 오류를 표시하도록 설정되어 있는지 확인하십시오. 서버 구성에 액세스 할 수없는 경우 스크립트 맨 위에 이것을 추가해야 할 수도 있습니다.
error_reporting(E_ALL);
ini_set('display_errors', '1');
행운을 빕니다!
Zend 와 같은 프레임 워크를 통합하지 않으려면 trigger_error 메소드를 사용 하여 php 오류 로그에 로그 할 수 있습니다 .
다음과 같은 파일에 쓸 수도 있습니다.
$logFilePath = '../logs/debug.text';
ob_start();
// if you want to concatenate:
if (file_exists($logFilePath)) {
include($logFilePath);
}
// for timestamp
$currentTime = date(DATE_RSS);
// echo log statement(s) here
echo "\n\n$currentTime - [log statement here]";
$logFile = fopen($logFilePath, 'w');
fwrite($logFile, ob_get_contents());
fclose($logFile);
ob_end_flush();
PHP가 파일에 액세스하고 파일에 쓸 수 있도록 적절한 권한이 설정되어 있는지 확인하십시오 ( 775
).
php curl 모듈을 사용하여 http://liveoutput.com/ 을 호출 할 수 있습니다 . 이것은 php.ini의 특정 제한이 존재하여의 사용을 제한하는 안전한 회사 환경에서 효과적입니다 file_put_contents
.
이것은 PHP 디버깅 및 로깅을위한 훌륭한 도구입니다 : PHp Debugger & Logger
단 3 줄의 코드로 즉시 작동합니다. Ajax 디버깅을 위해 메시지를 js 콘솔에 보내고 오류 처리기를 대체 할 수 있습니다. 또한 var_dump () 및 print_r ()와 같은 변수에 대한 정보를 더 읽기 쉬운 형식으로 덤프합니다. 아주 좋은 도구!
나는 이것들을 많이 사용했지만 개발할 때 일반적으로 디버깅해야하며 localhost에서 개발 한 이후 다른 사람들의 조언을 따르고 이제 브라우저의 JavaScript 디버그 콘솔에 씁니다 ( http : //www.codeforest 참조) . net / debugging-php-in-browsers-javascript-console ).
즉, PHP에서 브라우저에서 생성하는 웹 페이지를보고 F12를 눌러 디버그 추적을 빠르게 표시하거나 숨길 수 있습니다.
디버거, CSS 레이아웃 등을위한 개발자 도구를 끊임없이보고 있기 때문에 PHP 로그를 살펴 보는 것이 좋습니다.
누구든지 그 코드를 우리에게 결정한다면, 나는 약간의 변경을했다. 후
function debug($name, $var = null, $type = LOG) {
나는 덧붙였다
$name = 'PHP: ' . $name;
내 서버 측 PHP가 HTML 관련 JavaScript를 생성하기 때문에 PHP와 JS의 출력을 구별하는 것이 유용하다는 것을 알았습니다.
(참고 : 현재 PHP, JS 및 데이터베이스 액세스에서 다른 출력 유형을 켜고 끌 수 있도록 이것을 업데이트하고 있습니다)
당신이 사용할 수있는
<?php
{
AddLog("anypage.php","reason",ERR_ERROR);
}
?>
또는 그 진술을 로그에 인쇄하려면 다음을 사용할 수 있습니다
AddLog("anypage.php","string: ".$string,ERR_DEBUG_LOW);