PHP 오류를 표시하려면 어떻게 해야 하나요?
파일PHP ini 파일)을 했습니다.php.ini
및 )의 개요display_errors
도 「에러 리포트」가 됩니다.E_ALL
Apache Web ★★★★★★★★★★★★★★★★★★★★★★★★」
이 행들을 스크립트의 맨 위에 배치했는데 단순한 해석 오류조차 포착하지 못했습니다.들어 변수를 할 때 변수에는 「」가 ."$"
는 진술을 끝내지 ";"
단, 모든 스크립트에서 이러한 오류에 대한 빈 페이지가 표시되지만 브라우저 출력에 오류가 있는지 확인해야 합니다.
error_reporting(E_ALL);
ini_set('display_errors', 1);
이제 뭘 해야 하죠?
이 방법은 항상 유효합니다.
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
단, PHP가 해석 오류를 표시하는 것은 아닙니다.이 오류를 표시하는 유일한 방법은 다음 행으로 php.ini를 수정하는 것입니다.
display_errors = on
수 )php.ini
에 이 을 에 .htaccess
을 이용하다)
php_flag display_errors 1
실행 시 오류 출력을 활성화하면 파일을 실제로 실행하기 전에 구문 분석하기 때문에 구문 분석 오류를 잡을 수 없습니다.display_errors가 켜져 있고 erroriate error_reporting 수준이 사용되도록 실제 서버 구성을 변경해야 합니다.php.ini에 액세스할 수 없는 경우 서버에 따라서는 .htaccess 또는 이와 유사한 기능을 사용할 수 있습니다.
이 질문은 추가 정보를 제공할 수 있습니다.
php.ini 내부:
display_errors = on
그런 다음 웹 서버를 다시 시작합니다.
모든 오류를 표시하려면 다음 작업을 수행해야 합니다.
1.으로 1. PHP 스크립트)에 다음 행을 합니다.index.php
error_reporting(E_ALL);
ini_set('display_errors', '1');
2. (a) 이 스크립트에 구문 오류가 없는지 확인합니다.
--또는--
( 2. (b) 설정display_errors = On
안에서php.ini
그렇지 않으면 두 줄도 못 달려요!
(커맨드 라인에서) 다음을 실행하여 스크립트에 구문 오류가 없는지 확인할 수 있습니다.
php -l index.php
다른 PHP 스크립트의 스크립트를 포함하면 포함된 스크립트에 구문 오류가 표시됩니다.예를 들어 다음과 같습니다.
index.php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Any syntax errors here will result in a blank screen in the browser
include 'my_script.php';
my_script.php
adjfkj // This syntax error will be displayed in the browser
웹 에서는 PHP의 할 수 ..htaccess
filename을 클릭합니다.
다음 행을 추가할 수 있습니다.
php_value display_errors 1
저는 당신과 같은 문제가 있었고 이 솔루션으로 해결되었습니다.
"오류 보고" 또는 "표시 오류"에 대한 모든 설정이 PHP 7에서 작동하지 않는 것으로 나타날 수 있습니다.에러 처리가 변경되었기 때문입니다.대신 다음을 시도해 보십시오.
try{
// Your code
}
catch(Error $e) {
$trace = $e->getTrace();
echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}
또는 예외와 오류를 한 번에 파악하려면(PHP 5와 하위 호환성이 없음):
try{
// Your code
}
catch(Throwable $e) {
$trace = $e->getTrace();
echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}
이 조작은 유효합니다.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
용도:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
이 방법이 가장 좋지만 구문 오류가 발생하면 출력이 공백이므로 콘솔을 사용하여 구문 오류를 확인하십시오.PHP 코드를 디버깅하는 가장 좋은 방법은 콘솔을 사용하는 것입니다. 다음을 수행하십시오.
php -l phpfilename.php
index.php 파일로 설정합니다.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
PHP 파일이 있는 폴더에 php.ini라는 파일을 만듭니다.
php.ini 내부에 다음 코드를 추가합니다(코드를 표시하는 간단한 오류입니다).
display_errors = on
display_startup_errors = on
현재 PHP 7을 실행하고 있기 때문에 여기에 제시된 답변은 더 이상 정확하지 않습니다.Frank Forte가 PHP 7에 대해 언급할 때, 유일하게 문제가 없는 것은 Frank Forte입니다.
한편, 시행/캐치를 사용하여 오류를 캐치하는 대신 use include라는 트릭을 사용할 수 있습니다.
다음은 세 가지 코드입니다.
파일: tst1.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
// Missing " and ;
echo "Testing
?>
PHP 7에서 실행하면 아무것도 표시되지 않습니다.
자, 이걸 써보세요.
파일: tst2.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include ("tst3.php");
?>
파일: tst3.php
<?php
// Missing " and ;
echo "Testing
?>
다음으로 오류 보고서를 설정하는 tst2를 실행하고 tst3을 포함합니다.다음과 같이 표시됩니다.
해석 오류: 구문 오류, 예기치 않은 파일 끝, 예상 변수(T_VARILE) 또는 ${(T_DILLY_OPEN_CURLY_BRACES) 또는 tst3의 {$(T_CURLY_OPEN)입니다.4행의 php
보통 PHP 프로젝트에서는 다음과 같은 코드를 사용합니다.
if(!defined('ENVIRONMENT')){
define('ENVIRONMENT', 'DEVELOPMENT');
}
$base_url = null;
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'DEVELOPMENT':
$base_url = 'http://localhost/product/';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL|E_STRICT);
break;
case 'PRODUCTION':
$base_url = 'Production URL'; /* https://google.com */
error_reporting(0);
/* Mechanism to log errors */
break;
default:
exit('The application environment is not set correctly.');
}
}
위의 답변을 모두 따르더라도(또는 php.ini 파일을 편집할 수 없음) 오류 메시지를 받을 수 없는 경우 오류 보고를 활성화하는 새로운 PHP 파일을 만들고 문제 파일을 포함시켜 보십시오.예:
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once('problem_file.php');
모든 것이 제대로 설정되었음에도 불구하고php.ini
제 시나리오는 다음과 같습니다.
//file1.php
namespace a\b;
class x {
...
}
//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
...
}
via'a a via via via via via via via via via via via via via php.ini
★★★★★★★★★★★★★★★★★」.htaccess
PHP 스크립트에 구문 분석 오류가 포함되어 있을 때 오류를 표시하는 것은 운이 없습니다.그런 다음 명령줄에서 다음과 같이 파일을 보풀로 처리해야 합니다.
find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"
가 너무 할 수 php.ini
★★★★★★★★★★★★★★★★★」.htaccess
또, 다음의 방법으로 값을 변경할 수 없는 경우도 있습니다.ini_set
다음 PHP 스크립트를 사용하여 확인할 수 있습니다.
<?php
if( !ini_set( 'display_errors', 1 ) ) {
echo "display_errors cannot be set.";
} else {
echo "changing display_errors via script is possible.";
}
다음과 같은 작업을 수행할 수 있습니다.
기본 인덱스 파일에서 다음 매개 변수를 설정합니다.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
그런 다음 요건에 따라 표시할 항목을 선택할 수 있습니다.
모든 오류, 경고 및 알림:
error_reporting(E_ALL); OR error_reporting(-1);
모든 오류:
error_reporting(E_ERROR);
모든 경고의 경우:
error_reporting(E_WARNING);
모든 통지에 대하여:
error_reporting(E_NOTICE);
자세한 내용은 여기를 참조하십시오.
독자적인 커스텀에러 핸들러를 추가할 수 있습니다.이것에 의해, 디버깅 정보를 추가할 수 있습니다.또한 이메일로 정보를 보내도록 설정할 수 있습니다.
function ERR_HANDLER($errno, $errstr, $errfile, $errline){
$msg = "<b>Something bad happened.</b> [$errno] $errstr <br><br>
<b>File:</b> $errfile <br>
<b>Line:</b> $errline <br>
<pre>".json_encode(debug_backtrace(), JSON_PRETTY_PRINT)."</pre> <br>";
echo $msg;
return false;
}
function EXC_HANDLER($exception){
ERR_HANDLER(0, $exception->getMessage(), $exception->getFile(), $exception->getLine());
}
function shutDownFunction() {
$error = error_get_last();
if ($error["type"] == 1) {
ERR_HANDLER($error["type"], $error["message"], $error["file"], $error["line"]);
}
}
set_error_handler ("ERR_HANDLER", E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
register_shutdown_function("shutdownFunction");
set_exception_handler("EXC_HANDLER");
추가 옵션을 포함하여 승인되었습니다.PHP 파일의 my DEVLOWEND apache vhost (.htaccess가 실가동되지 않도록 할 수 있는 경우):
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
단, PHP가 해석 오류를 표시하는 것은 아닙니다.이 오류를 표시하는 유일한 방법은 다음 행으로 php.ini를 수정하는 것입니다.
display_errors = on
수 )php.ini
에 이 을 에 .htaccess
을 이용하다)
// I've added some extra options that set E_ALL as per https://www.php.net/manual/en/errorfunc.configuration.php.
php_flag log_errors on
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting 2147483647
php_value error_log /var/www/mywebsite.ext/logs/php.error.log
위의 코드는 동작합니다.
error_reporting(E_ALL);
다만, 파일의 전화기의 코드를 편집해 주세요.
error_reporting =on
빠른 디버깅일 경우 사용할 수 있는 최선의/간단/빠른 솔루션은 코드를 예외로 둘러싸는 것입니다.생산 속도가 빠른 것을 확인하고 싶을 때는 그렇게 하고 있습니다.
try {
// Page code
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
<?php
// Turn off error reporting
error_reporting(0);
// Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Report all errors
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);
// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
?>
에는 </FONT CHANGE:/FONT CHANGE:/FONT CHANGE:>가php.ini
display_disabled로 설정되었습니다.다만, 개발 환경에서는, 트러블 슈팅에 display_errors 를 유효하게 할 수 있습니다.
그냥 쓰세요:
error_reporting(-1);
이를 수행하려면 php.ini 파일을 변경하고 다음을 추가합니다.
display_errors = on
display_startup_errors = on
또는 다음 코드를 사용할 수도 있습니다.이것은 항상 나에게 효과가 있기 때문입니다.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Xdebug가 설치되어 있는 경우 다음 설정으로 모든 설정을 덮어쓸 수 있습니다.
xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;
force_display_module
입력: int, 기본값: 0, Xdebug > = 2.3 이 설정이 1로 설정되어 있으면 PHP의 display_display의 설정에 관계없이 오류가 항상 표시됩니다.
force_error_module
입력: int, 기본값: 0, Xdebug > = 2.3 이 설정은 error_debug와 같은 비트 마스크입니다.이 비트 마스크는 error_reporting으로 표시되는 비트 마스크와 논리적으로 OR 처리되어 표시되는 에러가 더미네이트 됩니다.이 설정은 php.ini에서만 실행할 수 있으며 ini_set()에서 응용 프로그램이 어떤 작업을 수행하든 특정 오류를 강제로 표시할 수 있습니다.
다음 코드를 사용할 수 있습니다.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
E_NOTICE를 제외한 모든 오류를 보고합니다.
error_reporting(E_ALL & ~E_NOTICE);
모든 PHP 오류 표시
error_reporting(E_ALL); or ini_set('error_reporting', E_ALL);
모든 오류 보고 끄기
error_reporting(0);
명령줄에 있는 경우 실행할 수 있습니다.php
와 함께-ddisplay_errors=1
설정을 덮어쓰다php.ini
:
php -ddisplay_errors=1 script.php
error_reporting(1);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
이것을 페이지 맨 위에 놓으세요.
코드 상단에 입력
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
그리고 php.ini 파일에 다음과 같이 삽입합니다.
display_errors = on
효과가 있을 거야.
간단한 방법으로 디스플레이에 Php 오류를 표시할 수 있습니다.우선 아래 코드를 php.ini 파일에 입력해 주세요.
display_errors = on;
(php.ini에 액세스 할 수 없는 경우는, 이 행을 .htaccess 에 넣는 것도 동작합니다).
php_flag display_errors 1
또는 index.php 파일에서 다음 코드를 사용할 수도 있습니다.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Unix CLI 에서는, 에러만을 파일에 리다이렉트 하는 것이 매우 실용적입니다.
./script 2> errors.log
스크립트에서 다음 중 하나를 사용합니다.var_dump()
또는 평소와 동등(STDOUT 및 STDERR 모두 출력을 수신함)하지만 로그 파일에만 쓰려면 다음과 같이 하십시오.
fwrite(STDERR, "Debug infos\n"); // Write in errors.log^
그런 다음 다른 셸에서 라이브 변경:
tail -f errors.log
또는 간단히 말하면
watch cat errors.log
언급URL : https://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display
'programing' 카테고리의 다른 글
#1064 - SQL 구문에 오류가 있습니다.MariaDB 서버 버전에 대응하는 매뉴얼에서 사용하는 올바른 구문을 확인해 주십시오.근접적인 이유는 무엇입니까? (0) | 2022.10.21 |
---|---|
Django 옵션 URL 파라미터 (0) | 2022.10.21 |
x일 연속 값이 동일한지 확인합니다. (0) | 2022.10.21 |
https://bower.herokuapp.com/packages/에 대한 EINVRES 요구가 502로 실패했습니다. (0) | 2022.10.21 |
Vue 구성 요소의 Laravel 로그아웃 경로 (0) | 2022.10.21 |