Waarschuwingsberichten verwijderen in PHP

Ik heb wat PHP-code. Wanneer ik het uitvoer, verschijnt er een waarschuwingsbericht.

Hoe kan ik deze waarschuwingsberichten verwijderen / onderdrukken / negeren?


Antwoord 1, Autoriteit 100%

U moet echt oplossen wat de waarschuwing veroorzaakt, maar u kunt de zichtbaarheid van fouten regelen met error_reporting(). Om waarschuwingsberichten over te slaan, kunt u iets als:

gebruiken

error_reporting(E_ERROR | E_PARSE);

Antwoord 2, Autoriteit 32%

U kunt een @ voor uw functie bel naar Onderdruk alle foutmeldingen.

@yourFunctionHere();

Antwoord 3, Autoriteit 12%

Om waarschuwingen te onderdrukken tijdens het verlaten van alle andere foutrapportage ingeschakeld:

error_reporting(E_ALL ^ E_WARNING); 

Antwoord 4, Autoriteit 8%

Als u geen waarschuwingen wilt weergeven en fouten gebruikt

// Turn off all error reporting
error_reporting(0);

foutrapportage – PHP-handleiding


Antwoord 5, Autoriteit 6%

Als u de waarschuwingen en enkele andere fouttypen (bijvoorbeeld mededelingen) wilt onderdrukken tijdens het weergeven van alle andere fouten, kunt u doen:

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);

Antwoord 6, Autoriteit 5%

in Core Php om waarschuwingsberichten te verbergen, zet error_reporting(0) bovenaan het algemene bestand of het individuele bestand.

In WordPress waarschuwingen en kennisgevingen verbergenvoeg de volgende code toe aan het wp-config.php bestand

ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Antwoord 7, autoriteit 3%

Niet precies antwoord op de vraag, maar ik denk dat dit in sommige situaties een beter compromis is:

Ik kreeg een waarschuwingsbericht als gevolg van een printf()-instructie in een bibliotheek van derden. Ik wist precies wat de oorzaak was – een tijdelijke oplossing terwijl de derde partij hun code repareerde. Ik ben het ermee eens dat waarschuwingen niet onderdrukt mogen worden, maar ik kon mijn werk niet demonstreren aan een klant terwijl het waarschuwingsbericht op het scherm verscheen. Mijn oplossing:

printf('<div style="display:none">');
    ...Third-party stuff here...
printf('</div>');

De waarschuwing stond nog steeds in de paginabron als herinnering voor mij, maar onzichtbaar voor de klant.


Antwoord 8, autoriteit 3%

Ik doe het als volgt in mijn php.ini:

error_reporting = E_ALL & ~E_WARNING  & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

Hiermee worden alleen fatale fouten geregistreerd en geen waarschuwingen.


Antwoord 9, autoriteit 2%

Ik denk dat de configuratie van .htaccess een betere oplossing is. Op die manier hoef je de code van de applicatie niet te wijzigen. Hier zijn richtlijnen voor Apache2

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

Antwoord 10

Je zou de waarschuwing kunnen onderdrukken met error_reportingmaar de veel betere manier is om eerst je script te repareren.

Als je niet weet hoe, bewerk dan je vraag en laat ons de betreffende regel zien en de waarschuwing die wordt weergegeven.


Antwoord 11

Gebruik dit voorbeeld bovenaan uw code om alle waarschuwingen te negeren:

error_reporting(0);

Antwoord 12

Er is al een antwoord met Error Control Operatormaar het ontbreekt aan uitleg. U kunt de operator @gebruiken bij elke uitdrukking en het verbergt fouten (behalve Fatale fouten).

@$test['test']; //PHP Notice:  Undefined variable: test
@(14/0); // PHP Warning:  Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error:  Uncaught Error: Call to undefined function customFuntion()

Voor het debuggen is het een snelle en perfecte methode. Maar u mag het nooit gebruiken voor productie of permanent opnemen in uw lokale versie. Je krijgt er veel onnodige irritatie van.

Je zou in plaats daarvan moeten overwegen:

1.Instellingen voor foutrapportage zoals vermeld in geaccepteerd antwoord.

error_reporting(E_ERROR | E_PARSE);

of van PHP INI-instellingen

ini_set('display_errors','Off');

2.Uitzonderingen opvangen

try {
    $var->method();
} catch (Error $e) {
    // Handle error
    echo $e->getMessage();
}

Other episodes