Mulla localhostissa dev-palvelin ja tuotannossa vastaavat tiedostot.
Localhostissa mail-funktion ei luonnollisesti toimi.
Onko mitää tapaa järkevästi piilottaa mail-funktion error viesti, mulla se ei näyttäisi onnistuvan edes tällä koodipätkällä, vaan warning pilaa koodinsuorituksen:
$ok = mail($person->email, "Nueva contraseña", $message, $headers); try { if($ok) { $error = "<span class='green'>El mensaje fue enviando al correo: ".$person->email.".</span>"; } else { $error = "<span class='red'>El mensaje no fue enviando!</span>"; } } catch(Exception $e) { $error = "<span class='red'>El mensaje no fue enviando!</span>"; }
Eli catchaus ei toimi, johtuukso jostain display errorista vai mistä? Miten kannattaisi hoittaa asetukset siten, että errorit näkyy localhostissa, lukuunottamatta mail warning:a mutta tuotannossa ei mikään.
mail-funktion pitäisi olla tuolla try-lohkon sisällä.
try { mail(...); } catch(Exception $e) { //echo $e; }
Oot ihan oikeassa, pistin sen sisällä mutta jostain syystä toistaseksi kuitenkin vielä warning ilmestyy.
Jos laitat functioon @-etumerkin niin se piilottaa varoitukset. Eli @mail(...).
Hei toi oli ihan kikka kuutonen, kiitti! Enpä olis manuaalista arvannu moista lähteä kaivaan.
ONGELMA RATKAISTU
Yritä nyt edes opetella PHP:n alkeet ennen kuin lähdet pykäämään kokonaista verkkopalvelua sillä...
Try-catch-lohko kaappaa vain poikkeuksia. Noticet, warningit ja catchable fatal errorit voi käsitellä asentamalla virheenkäsittelyfunktion funktiolla set_error_handler().
Ja et prkl todellakaan voi try-catchilla napata edes poikkeuksia, jos poikkeus ei tapahdu try-lohkon sisällä!
Virheilmoitusten ohittaminen @-merkillä ei ole kovin hyvä tapa. Tuotannossa ne kannattaa tallentaa lokiin ja näyttää käyttäjälle siististi yksinkertainen virheilmoitus. Tämä onnistuu set_error_handler-funktiolla kuten The Alchemist sanoi. Kehitysympäristössä PHP:n omat virheilmoitukset vielä menevät.
Aihe on jo aika vanha, joten et voi enää vastata siihen.