ප්‍රදර්ශනය කිරීමට PHP දෝෂ ලබා ගන්නේ කෙසේද?


1740

මම මගේ PHP ini ගොනුව ( php.ini) පරීක්ෂා කර ඇති අතර display_errorsඑය සකසා ඇති අතර දෝෂ වාර්තා කිරීම ද වේ E_ALL. මම මගේ Apache වෙබ් සේවාදායකය නැවත ආරම්භ කර ඇත්තෙමි.

මම මෙම රේඛා මගේ ස්ක්‍රිප්ටයේ ඉහළින්ම තබා ඇති අතර එය සරල විග්‍රහ දෝෂ පවා හසු නොකරයි. උදාහරණයක් ලෙස, මම a සමඟ විචල්‍යයන් ප්‍රකාශ කරන අතර ප්‍රකාශ ප්‍රකාශ "$"නොකරමි ";". නමුත් මගේ සියලුම ස්ක්‍රිප්ට් මෙම දෝෂ වල හිස් පිටුවක් පෙන්වයි, නමුත් ඇත්ත වශයෙන්ම මගේ බ්‍රව්සරයේ ප්‍රතිදානයේ දෝෂ දැකීමට මට අවශ්‍යය .

error_reporting(E_ALL);
ini_set('display_errors', 1);

කිරීමට ඉතිරිව ඇත්තේ කුමක්ද?


8
සමහර විට මෙය ක්‍රියාත්මක වන්නේ ඇයිද යන්න අනෙක් අය නොවන්නේ ඇයිදැයි මම තවම නිශ්චිතව දක්වා නැත, නමුත් ඕනෑම කෙනෙකුට පීඑච්පී ස්ක්‍රිප්ටයක දෝෂ ඉක්මණින් ටොගල් කිරීමට අවශ්‍ය නම් (හෝ $_REQUESTපරාමිතියක් හරහා ඒවා සක්‍රීය කරන්න ) මෙම පේළි දෙක බොහෝ විට ක්‍රියා කරයි.
සන්නාම පිටපත

php ini ගොනුවෙන් xdebug සක්‍රීය කිරීමෙන් ඔබට දෝෂයේ විස්තර දැකිය හැකිය.
jewelhuq

මාතෘකාව ආවරණය කරන ඉක්මන් ලිපියක් මෙන්න - blog.phplogger.com/2019/03/10/error-message-visibility-in-php
Bogdans

Answers:


3216

මෙය සැමවිටම මට වැඩ කරයි:

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

9
ඔබට මෙම පේළි 3 භාවිතා කළ හැකි බව සලකන්න, ඉන්පසු ඇතුළත් කරන්න ('fileImWorkingOn.php');. එවිට ඔබට සින්ටැක්ස් දෝෂ ද හසු කර ගත හැකිය!
ස්නැප් කරන්න

14
මම SysOps නොමැති අතර, මම සිතන්නේ php.ini ට වඩා වැඩි පිරිසකට .htaccess ගොනුවක් ඇති අතර, මේ දෙකම විග්‍රහ කිරීමට පෙර පැමිණෙනු ඇත, නේද? php_flag display_errors 1.htaccess සඳහා
රයන් ටේලර්

1
දැන් දෝෂ ලොග් වී ඇති බැවින් ඒවා යන්නේ කොතැනටද? මම / var / log / apache2 වෙත ගිය අතර එය සියලු ල logs ු-සටහන් පෙන්වයි, නමුත් මා මෑතකදී ක්‍රියාත්මක කළ වැඩසටහන පිළිබඳ කිසිදු තොරතුරක් නොමැත. මට පද්ධතිය නැවත ආරම්භ කිරීම පිළිබඳ තොරතුරු ලැබෙන්නේ සෑම උදෑසනකම එක් වරක් පමණි.
මයිකල්

1
Ic මයිකල් දෝෂ තිරය වෙතට හෝ ප්‍රතිදානය හරවා යවන ස්ථානයට යයි
ෆැන්සි ජෝන්

2
E_ALLPHP 5.3 හි ඇති සියලුම දෝෂ පෙන්වීමට ප්‍රමාණවත් නොවේ . " 5.4.0 හි E_STRICTකොටසක් බවට පත්විය E_ALL" - PHP අත්පොත ඔබට අවශ්‍ය E_ALL | E_STRICTහෝ -1එම අනුවාදයේ.
ජෙරාඩ් රොචේ

155

ධාවන වේලාවේදී දෝෂ ප්‍රතිදානය සක්‍රීය කිරීමේදී ඔබට විග්‍රහ දෝෂ හඳුනාගත නොහැක, මන්ද එය සත්‍ය වශයෙන්ම කිසිවක් ක්‍රියාත්මක කිරීමට පෙර ගොනුව විග්‍රහ කරයි (තවද මෙම කාලය තුළ එය දෝෂයක් ඇති බැවින් එය කිසිවක් ක්‍රියාත්මක නොකරනු ඇත). ඔබට සත්‍ය සේවාදායක වින්‍යාසය වෙනස් කිරීමට අවශ්‍ය වන අතර එමඟින් display_errors ක්‍රියාත්මක වන අතර අනුමත දෝෂ_ වාර්තාකරණ මට්ටම භාවිතා වේ. ඔබට php.ini වෙත ප්‍රවේශය නොමැති නම්, ඔබට සේවාදායකය මත පදනම්ව .htaccess හෝ ඊට සමාන භාවිතා කළ හැකිය.

මෙම ප්‍රශ්නය අමතර තොරතුරු සැපයිය හැකිය.


2
ඒක දැනගෙන හිටියේ නැහැ. මම php.ini ගොනුව අතින් සංස්කරණය කළ අතර එය දැන් ක්‍රියාත්මක වේ. ස්තූතියි!
අබ්ස්

143

ඔබේ php.ini ඇතුළත :

display_errors = on

ඉන්පසු ඔබේ වෙබ් සේවාදායකය නැවත ආරම්භ කරන්න.


7
+. මගේ උබුන්ටු /etc/php5/apache2/php.ini
m93a

5
නැවත ආරම්භ කිරීම සඳහා (ඩේබියන්, උබුන්ටු, ආදිය)sudo service apache2 restart
පීටර් ක්‍රවුස්

4
OS X මත නැවත ආරම්භ කිරීම සඳහා sudo apachectl -k restart.
Pea

3
විනෝදජනක කාරණය: ඔබ සරලවම phpinfo () තුළට දැමුවහොත් ඔබගේ php.ini ගොනුව පටවා ඇති බව ඔබට සොයාගත හැකිය; හිස් php ගොනුවකට. එය 7 වන පේළිය පහළට බැස කැඳවනු ලැබේLoaded Configuration File
ෆ්‍රැන්කන්මින්ට්

අපි cPanel හි php code direclty ලියන්නේ නම් අප කරන්නේ කෙසේද?
arqam

98

සියලුම දෝෂ පෙන්වීමට ඔබට අවශ්‍ය වන්නේ:

1. බ්‍රව්සරයෙන් ඔබ අමතන PHP ස්ක්‍රිප්ටයේ මෙම රේඛා තබා ගන්න (සාමාන්‍යයෙන් index.php):

error_reporting(E_ALL);
ini_set('display_errors', '1');

2. (අ) මෙම ස්ක්‍රිප්ටයේ සින්ටැක්ස් දෝෂ නොමැති බවට වග බලා ගන්න

-හෝ-

2. (ආ) සකසන්න display_errors = Onඔබගේphp.ini

එසේ නොමැති නම්, එම පේළි 2 ධාවනය කිරීමට පවා එයට නොහැකිය!

ධාවනය කිරීමෙන් ඔබේ විධානාවලියෙහි සින්ටැක්ස් දෝෂ තිබේදැයි පරීක්ෂා කළ හැකිය (විධාන රේඛාවේදී):

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

51

සමහර වෙබ් සත්කාරක සැපයුම්කරුවන් ඔබට .htaccessගොනුවේ PHP පරාමිතීන් වෙනස් කිරීමට ඉඩ දෙයි .

ඔබට පහත පේළිය එක් කළ හැකිය:

php_value display_errors 1

මට ඔබේ ප්‍රශ්නයම තිබූ අතර මෙම විසඳුම එය නිවැරදි කළේය.


ඔබ nginx පරිසරයක සිටී නම් ph ph .php විධානය යටතේ ඔබේ වෙබ් අඩවියට (අඩවි ලබා ගත හැකි) වින්‍යාසයට php අගය එක් කරන්න. fastcgi_param PHP_VALUE "error_reporting = E_ALL; display n display_errors = 1;";
ලාසරොස් කොස්මිඩිස්

40

"දෝෂ වාර්තා කිරීම" හෝ "දර්ශන දෝෂ" සඳහා වන සියලුම සැකසුම් 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'];
}

1
ඔබ අදහස් කරන්නේ PHP7 හෝ PHP7.1 ද? , මම ව්යාකූල වෙමි ද වලංගු පිළිතුර යෝජිත පරිදි මම උත්සාහ කළා හා එය වැඩ, මම ඔබ ටිකක් වෙනස් ඇත්තෙන්ම "කිසිදු පසු ගැළපුම" යමක් IMHO, යෝජනා කරන බවයි සහ ඔබ සම්පූර්ණ PHP <7 කේතය හා එකතු කිරීමට අවශ්ය වෙනස් කිරීමට නම් try{} catch() {}සෑම තැනකම කේතය ඔබ දැනටමත් නිර්වචනය කර ඇති php කේතයේ, සිදුවීමට යන අවුල ගැන සිතීමට පවා මට අවශ්‍ය නැත ..
vdegenne

Ancy ෆැන්සි ජෝන්, මෙය උදව් විය හැකිය : $bt = debug_backtrace(); print_r($bt);.
ෆ්‍රෑන්ක් ෆෝර්ට්

@ballangddang, මම PHP 7.0 සමඟ ගැටළුවක් ඇති කර ගත්තෙමි, එහිදී මට දෝෂය පෙන්විය හැකි එකම ක්‍රමය උත්සාහක / අල්ලා ගැනීමේ කොටස් භාවිතා කිරීම සහ විශේෂයෙන් අල්ලා ගැනීමයි Error. ඔබ සියලු ඉල්ලීම් (සමහර විට ජාවාස්ක්‍රිප්ට්, සීඑස්එස්, පිංතූර හැර) index.php ගොනුවට නැවත ලියන්නේ නම්, එහි උත්සාහක ඇල්ලීමේ කොටස තිබේ නම් එය පහසු කරයි. ඔව්, තනි පිවිසුම් ස්ථානයක් නොමැති ඕනෑම පද්ධතියක් යාවත්කාලීන කිරීමට විශාල හිසරදයක් වනු ඇත.
ෆ්‍රෑන්ක් ෆෝර්ට්

PHP පාලනය කළ නොහැකි ව්‍යතිරේකයන් පෙන්වන්නේ නැද්ද? හොඳටම විශ්වාසද?
මාටින් ටුවර්නොයිජ්

එය පාලනය කළ නොහැකි ව්‍යතිරේකයන් පෙන්විය යුතුය. ඔබ ආරම්භයේදීම ප්‍රතිදාන බෆරයක් සක්‍රිය කළහොත් (අවසානයේදී ප්‍රතිචාරය බොඩි කිරීමට පෙර ඔබට ඕනෑම වේලාවක ශීර්ෂ යැවිය හැක) සමහර විට ව්‍යතිරේක පණිවිඩය කොතැනක හෝ නැතිවී යා හැකිය.
ෆ්‍රෑන්ක් ෆෝර්ට්


33

භාවිත:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

එය ලිවීමට හොඳම ක්‍රමය මෙයයි, නමුත් සින්ටැක්ස් දෝෂයක් හිස් ප්‍රතිදානයක් ලබා දෙයි, එබැවින් සින්ටැක්ස් දෝෂ පරීක්ෂා කිරීම සඳහා කොන්සෝලය භාවිතා කරන්න. PHP කේතය නිදොස් කිරීමට හොඳම ක්‍රමය වන්නේ කොන්සෝලය භාවිතා කිරීමයි; පහත සඳහන් දෑ ක්‍රියාත්මක කරන්න:

php -l phpfilename.php


20

ඔබේ PHP ගොනුව පවතින ෆෝල්ඩරයේ php.ini නමින් ගොනුවක් සාදන්න .

Php.ini ඇතුලත පහත කේතය එක් කරන්න (මම කේතය පෙන්වන සරල දෝෂයක් ලබා දෙමි):

display_errors = on

display_startup_errors = on

18

මෙන්න PHP පිටපතක්:

<?php
    ini_set("display_startup_errors", 1);
    ini_set("display_errors", 1);

    /* Reports for either E_ERROR | E_WARNING | E_NOTICE  | Any Error*/
    error_reporting(E_ALL);

    echo(abc); /* Notice: abc is an undefined constant */
?>

PHP දෝෂ පිළිබඳ වඩාත් සවිස්තරාත්මක පැහැදිලි කිරීමක් සඳහා, PHP දෝෂය - error_reporting () වෙත පිවිසෙන්න .


2
මෙය ෆැන්සි ජෝන් ගේ පිළිතුරට වඩා වෙනස් වන්නේ කෙසේද?
සියලුම කම්කරුවන් අත්‍යවශ්‍යයි

pcpburnz - එහි සෘජු ඉදිරි ප්‍රශ්න, සෑම කෙනෙකුම එකම රසය අනුව එකම කේත කට්ටලයක් ලබා දී ඇති එකම වෙනස. මම අතිරේක URL සබැඳියක් ලබා දුන් අතර එය PHP දෝෂය පිළිබඳ වැඩි විස්තර ලබා දෙනු ඇත.
බී.බාලමනගන්දන්

15

ඉහත පිළිතුරු සියල්ලම අනුගමනය කර තිබියදීත් (හෝ ඔබට ඔබේ 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 {
    ...
}

1
නැත, දෝෂ වාර්තා කිරීම ලොග්ලෙවල් එකක් නොවේ, එය ටිකක් ක්ෂේත්‍රයකි. 999999 භාවිතා කිරීම ඉතා නරක අදහසකි, min ණ 1 ක බලයක් භාවිතා කරන්න, උදාහරණයක් ලෙස 2047!
පීටර් - මොනිකා නැවත ස්ථාපනය කරන්න

ඔයා ඇත්තටම හරි, et පීටර්! මම එය E_ALL ලෙස වෙනස් කර ඇති බැවින් මෙය සියලු දෝෂ වාර්තා කිරීමට හැකි වේ (php 5.4 සහ ඊට පහළින් ඇති දැඩි දෝෂ හැර).
jxmallett

15

මම සාමාන්‍යයෙන් මගේ සරල 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.');
    }
}

15

Apache මොඩියුලයක් ලෙස PHP භාවිතා කරන විට, අපට Apache වින්‍යාස ගොනු (උදා: httpd.conf) සහ .htaccess ගොනු වල විධානයන් භාවිතා කර වින්‍යාස සැකසුම් වෙනස් කළ හැකිය. එසේ කිරීමට ඔබට “AllowOverride Options” හෝ “AllowOverride All” වරප්‍රසාද අවශ්‍ය වේ.

මෙය පරීක්ෂා කරන්න

http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess


සබැඳිය කැඩී ඇත (404).
පීටර් මෝර්ටෙන්සන්

14

ඔබට කෙසේ හෝ සැකසුම වෙනස් කිරීමට නොහැකි තත්වයකට ඔබ පත්වුවහොත් 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.";
}

find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'සරලයි
ස්කොන්ස්

14

අප දැන් PHP 7 ධාවනය කරන බැවින්, මෙහි දී ඇති පිළිතුරු තවදුරටත් නිවැරදි නොවේ. PHP 7 ගැන කතා කරන විට ෆ්‍රෑන්ක් ෆෝර්ට්ගේ එකම එක තවමත් හොඳයි .

අනෙක් පැත්තෙන්, උත්සාහයෙන් / අල්ලා ගැනීමෙන් දෝෂ හඳුනා ගැනීමට උත්සාහ කරනවාට වඩා ඔබට උපක්‍රමයක් භාවිතා කළ හැකිය: භාවිතය ඇතුළත් කරන්න.

මෙහි කේත කොටස් තුනක්:

ගොනුව: 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_VARIABLE) හෝ $ {(T_DOLLAR_OPEN_CURLY_BRACES) හෝ tst3.php හි T $ (T_CURLY_OPEN)


13

ඔබට පහත වැනි දෙයක් කළ හැකිය:

ඔබගේ ප්‍රධාන දර්ශක ගොනුවේ පහත පරාමිතීන් සකසන්න:

    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);

වැඩි විස්තර සඳහා මෙහි පරීක්ෂා කරන්න .


මොකක්ද මේ "ප්රධාන මිල දර්ශකය ගොනුව" ? ගොනුව index.html?
පීටර් මෝර්ටෙන්සන්

12

අමතර නිදොස් කිරීමේ තොරතුරු සැපයිය හැකි ඔබේම අභිරුචි දෝෂ හසුරුවන්නෙකු ඔබට එකතු කළ හැකිය. තවද, ඔබට තොරතුරු විද්‍යුත් තැපෑලෙන් යැවීමට එය සැකසිය හැකිය.

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");

7

ඉහළින් ඇති මෙම කේතය ක්‍රියාත්මක විය යුතුය:

error_reporting(E_ALL);

කෙසේ වෙතත්, ගොනුවේ දුරකථනයේ කේතය සංස්කරණය කිරීමට උත්සාහ කරන්න:

error_reporting =on

6

ඉක්මන් නිදොස් කිරීමක් නම් ඔබට භාවිතා කළ හැකි හොඳම / පහසු / වේගවත් විසඳුම නම්, ඔබේ කේතය අල්ලා ගැනීමේ ව්‍යතිරේකයන් සමඟ වට කර ගැනීමයි. නිෂ්පාදනයේ වේගවත් යමක් පරීක්ෂා කිරීමට අවශ්‍ය විට මම කරන්නේ එයයි.

try {
    // Page code
}
catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

Php7 සඳහා, catch (Throwable $e)වඩා හොඳය ... නැතහොත් යටින් තවත් ඇල්ලීමේ කොටසක්catch(Error $e)
ෆ්‍රෑන්ක් ෆෝර්ට්


4

ඒක තමයි මම ඉගෙනගත්තේ. PHP.INI ගොනුවේ,

error_reporting = E_ALL
display_errors = On

2
වෙනස් වෙනවාද? එකතු කරන්නේ?
පීටර් මෝර්ටෙන්සන්

atm ඔබේ පිළිතුර තේරුමක් නැති නිසා එහි සන්දර්භය නොමැති වීම; පීටර් මෝර්ටෙන්සන් විසින් ද නියම කර ඇත. එය වැඩිදියුණු නොකිරීම "ඉවත් කිරීම සඳහා ධජය" (බොට්ස් මගින්) සඳහා එය සූදානම් කරයි. (අඩු ගුණාත්මක සමාලෝචනයෙන්).
ZF007

4
    <?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);
    ?>

ඔබේ වෙබ් අඩවිය සජීවීව තිබියදී, php.iniආරක්ෂක හේතුන් මත ගොනුවේ display_errors අක්‍රීය කර තිබිය යුතුය. කෙසේ වෙතත්, සංවර්ධන පරිසරය සඳහා, දෝශ නිරාකරණය සඳහා display_errors සක්‍රීය කළ හැකිය.


4

Php.ini ගොනුව වෙනස් කිරීමෙන් ඔබට මෙය කළ හැකි අතර පහත සඳහන් දෑ එකතු කරන්න

display_errors = on
display_startup_errors = on

නැතහොත් ඔබට සැමවිටම පහත සඳහන් කේතය භාවිතා කළ හැකිය

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

3

ඔබ Xdebug ස්ථාපනය කර ඇත්නම් ඔබට සැකසීමෙන් සෑම සැකසුමක්ම අභිබවා යා හැකිය:

xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;

force_display_errors

වර්ගය: int, පෙරනිමි අගය: 0, Xdebug හි හඳුන්වා දී ඇත> = 2.3 මෙම සැකසුම 1 ට සකසා ඇත්නම් දෝෂ නිරතුරුවම පෙන්වනු ඇත, PHP හි display_errors හි සැකසුම කුමක් වුවත්.

force_error_reporting

වර්ගය: int, පෙරනිමි අගය: 0, Xdebug හි හඳුන්වා දී ඇත> = 2.3 මෙම සැකසුම error_reporting වැනි බිට්මාස්ක් වේ. කුමන දෝෂ පෙන්විය යුතුද යන්න නිශ්චය කිරීම සඳහා error_reporting මගින් නිරූපණය කෙරෙන බිට්මාස්ක් සමඟ මෙම බිට්මාස්ක් තාර්කිකව සකසනු ලැබේ. මෙම සැකසුම කළ හැක්කේ php.ini වලින් පමණක් වන අතර ini_set () සමඟ යෙදුමක් කුමක් කළත් සමහර දෝෂ පෙන්වීමට බල කිරීමට ඔබට ඉඩ සලසයි.


3

ඔබට මෙම කේතය භාවිතා කිරීමට අවශ්‍ය විය හැකිය:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

2

E_NOTICE හැර අනෙකුත් සියලුම දෝෂ වාර්තා කරන්න

error_reporting(E_ALL & ~E_NOTICE);

සියලුම PHP දෝෂ පෙන්වන්න

error_reporting(E_ALL);  or ini_set('error_reporting', E_ALL);

සියලු දෝෂ වාර්තා කිරීම අක්‍රිය කරන්න

error_reporting(0);

1

යුනික්ස් සීඑල්අයි හි , දෝෂ පමණක් ගොනුවකට හරවා යැවීම ඉතා ප්‍රායෝගික ය :

./script 2> errors.log

සජීවී වෙනස්කම් සඳහා වෙනත් කවචයකින්:

tail -f errors.log

හෝ සරලව

watch cat errors.log

PHP පිළිබඳ මෙම ප්‍රශ්නයට එය පිළිතුරු දෙන්නේ කෙසේද?
පීටර් මෝර්ටෙන්සන්

./scriptයනු php CLI ස්ක්‍රිප්ටයකි (හැෂ්බෑන්ග් #!/usr/bin/php). ඔබට ගොනුවක php දෝෂ මේ ආකාරයෙන් හරවා යැවිය හැකිය. මෙය යුනික්ස් පයිප්ප වේ. මෙය සීජීඅයි ලෙස php නොවේ.
එන්වීආර්එම්

0

එය විධාන රේඛාවේ නම්, ඔබ ක්රියාත්මක කළ හැකිය phpසමග -ddisplay_errors=1ඇති පරයා කිරීමට php.ini:

php -ddisplay_errors=1 script.php

-1

වඩා වෙනත් php.iniහා ini_set()PHP විධානාවලියක් ක්රියාත්මක වන, ඔබ සමඟ මේ එකම දෙයක් කරන්න පුළුවන් .htaccessසහ httpd.confපහත පෙන්වා ඇත නියෝග.

සමහර සත්කාරක සැපයුම්කරුවන් .htaccessසහ හරහා PHP සැකසුම් සැකසීමට ඉඩ දෙයි httpd.conf.

PHP දෝෂ සඟවන්න

php_flag display_startup_errors ON

php_flag display_errors ON

php_flag html_errors ON

php_flag log_errors on

php_flag ignore_repeated_errors off

php_flag ignore_repeated_source off

php_flag report_memleaks on

php_flag track_errors on

php_value docref_root 0

php_value docref_ext 0

php_value error_log /home/path/public_html/domain/PHP_errors.log

php_value error_reporting 999999999

php_value error_reporting -1

php_value log_errors_max_len 0

Order allow,deny

Deny from all

Satisfy All

මෙම පිළිතුර සොයාගත්තේ ටිකක් ගූගල් කිරීමෙන් ය

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.