Skjul PHP fejlbeskeder i browseren

Jeg bokser med lidt udfordringer som jeg håber at der er en venlig sjæl der kan hjælpe med.
Jeg er ved at flytte til en cloud-løsning i stedet for mit tidligere webhotel men er stødt på lidt udfordringer. Tidligere har jeg et eller andet sted slået fra således at PHP fejl ikke bremser den videre afvikling af siden. I PHP.ini har jeg ændret således;
display_errors = Off
Det tænker jeg umiddelbart burde løse problemer - det gør det bare ikke. Jeg får stadig vist fejlene i browseren, hvilket jeg lige i det her tilfælde ikke ønsker.

Hej @psto
Tak for dit spørgsmål her i vores forum. Nu skriver du ikke så meget om dit setup, udover at det er en cloud-server. - men jeg syntes at kunne huske fra tidligere indlæg, at du kører cPanel ?
I så fald kan det skyldes at der er en php.ini fil for hvert domæne, som du skal tilpasse. Det er korrekt at display_error er den indstilling du skal ændre, for at fjerne visning af PHP-fejl på skærmen.
Du kan vha. error_reporting styre præcis hvad der skal logges af PHP-fejl:
# Find error_reporting indstillingen og ret fil:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED.
Og vha. log_ og display_errors kan du styre hvordan disse fejl skal behandles:
log_errors = On
display_startup_errors = Off
display_errors = Off
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

Hej @db
Tak for din tid.
Du har ret - jeg bruger cPanel og det er herigennem jeg har forsøgt at rette php.ini. JEg er opmærksom på at der er forskellige ini-filer til hvert domæne.
Min udfordring er bare at ændringer i ini-filen ikke slår igennem. Ændrer jeg eksempelvis display_errors til Off så skriver den stadig On hvis jeg laver en phpinfo() som viser de aktuelle indstillinger.
Jeg kan simpelthen ikke finde ud af hvorfor?

Hej @psto
Lige et par enkelte ord først, inden at jeg skriver en mulig løsning. Der kan nemlig være utallige grunde til hvorfor det lige er sådan at du ikke kan slå det fra, men den grund jeg finder hyppigst - er at det (måske) ikke virker overhovedet. Fordi at serveren generelt er opsat på sådan en måde at din php.ini fil overskrives andre steder i konfigurations filer.
Jeg plejer dog at sætte det direkte i PHP koden selv. (Evt. en config.php fil.)
config.php fil:
// Et eksempel på en config.php fil som altid bruges
// Skift imellem dev/prod environment.
define('DEBUG', true);
// Du burde altid få alle fejl - og så logge dem.
error_reporting(E_ALL);
if(DEBUG) {
// DEBUG == true
// Du koder nok på hjemmesiden, så vil gerne se det hele.
display_errors(true);
// Der er ingen grund til at logge filer når vi koder. Vi ser dem jo alligevel.
log_errors(false);
} else {
// DEBUG == false
// Slår visning af fejl fra.
display_errors(false);
// Nu vil vi gerne have at serveren laver log-filer.
log_errors(true);
}
Ang. phpinfo(); funktionen stadigvæk vises, selvom du sætter display_errors = Off - er fordi det er en funktion i PHP og ikke en indstilling. Du kan dog slå phpinfo(); fra ved hjælp af enten en .htaccess eller php.ini fil.
php.ini metode:
disable_functions = phpinfo
.htaccess metode:
php_value disable_functions phpinfo
Jeg håber at min forklaring og kode hjælper dig videre. Hav' en fantastisk påske.
@dhh
d. 24.03.2016 kl. 07:57 Med venlige hilsner
Daniel H. Hemmingsen (@dhh)

Hej igen,
Prøv at tjekke din phpinfo() for at se hvilken php.ini fil den loader.
Du kan også prøve at oprette en .htaccess-fil på webhotellet med følgende linje
php_flag display_errors off
cPanel har også en How-to omkring dette emne: https://documentation.cpanel.net/
Hvis du ønsker, vil jeg gerne tage et kig på serveren og hjælpe dig. I så fald fang mig på live-chatten.
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS