Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP mail() funktion error viesti näkymättömiin

Paulus M [10.04.2012 16:47:36]

#

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.

Macro [10.04.2012 16:52:18]

#

mail-funktion pitäisi olla tuolla try-lohkon sisällä.

try {
  mail(...);
} catch(Exception $e) {
  //echo $e;
}

Paulus M [10.04.2012 17:02:09]

#

Oot ihan oikeassa, pistin sen sisällä mutta jostain syystä toistaseksi kuitenkin vielä warning ilmestyy.

Synomi [10.04.2012 17:16:21]

#

Jos laitat functioon @-etumerkin niin se piilottaa varoitukset. Eli @mail(...).

Paulus M [10.04.2012 17:43:28]

#

Hei toi oli ihan kikka kuutonen, kiitti! Enpä olis manuaalista arvannu moista lähteä kaivaan.

ONGELMA RATKAISTU

The Alchemist [10.04.2012 18:42:52]

#

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ä!

-tossu- [10.04.2012 19:07:17]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta