2012-06-03 8 views
14

Duplicar posibles:
How can I tell PHP to dump exceptions as raw text instead of HTML?Cómo hacer que los errores de PHP en el texto en lugar de HTML

que estoy tratando de hacer un script de inicio de sesión utilizando C# y PHP y tengo la intención de venderlo como una instalación de 1 clic, así que necesito que sea a prueba de errores. Intento intencionalmente cometer errores en la configuración, pero cada vez que mi script php tiene un error, tiene una salida de bloque HTML con el error cuando solo quiero una salida de cadena (consulte la imagen).

Aquí está el código que estoy utilizando

// We will now set up our MySQL database login. The values should be self-explanatory. 
$sqlhost = "localhost"; 
$sqlusername = "unity"; 
$sqlpassword = "mypass123"; 

//we will now connect to our database 
$sqlcon = mysql_connect($sqlhost, $sqlusername, $sqlpassword) or die("Could not connect to database: " . mysql_error()); 

Cuando tengo toda la información que funciona muy bien y el resto del código se ejecuta sin un error. Pero si mi contraseña es incorrecta o el usuario no tiene acceso entonces me sale este error

Error I am trying to avoid

estoy recuperó la información de esta página y que tiene que ser enviado como texto plano que se muestre correctamente. Lo que quiero decir con esto es que cualquier etiqueta HTML como <div>, <br>, <a>, etc. y solo generalmente hace que la salida de texto se vea mal. Quiero que esto solo muestre el texto en la parte inferior de la página porque eso registra el error en sí mismo. No necesito que se registre dos veces y no necesito que tenga un formato elegante. Lo necesito en texto legible, de modo que si un usuario tiene un error, ellos pueden enviarme el texto breve y seré capaz de guiarlos por la solución.

+5

¿Has leído el manual sobre notificación y visualización de errores? La respuesta a su pregunta se puede encontrar allí. Además, no use mysql_ * para el acceso a la base de datos, son viejos, apenas se mantienen y desaprobados en todo menos en el nombre. – GordonM

+1

No, no tengo, no soy grande en PHP, hago más de C# y solo necesito un archivo PHP backend simple. Realicé algunas búsquedas en Google por un tiempo y no cambié nada, además de desactivar completamente los informes de errores, lo que no me pareció la mejor idea. ¿Y qué debería usar en reemplazo de mysql_ *? ¿Hay algo más nuevo/mejor para conectarse a una base de datos? –

+0

@ViperCode Lo que probablemente esté buscando es la configuración display_errors. Si display_errors está desactivado, los errores seguirán registrándose. También hay html_errors (aunque tu captura de pantalla parece un error HTML generado por xdebug, por lo que es posible que necesites encontrar la configuración correcta de xdebug). – Corbin

Respuesta

29

Si PHP muestra los errores de texto plano o HTML depende de su php.ini configuration:

html_errorsboolean

deshabilitar las etiquetas HTML en los mensajes de error. El nuevo formato para los errores HTML produce mensajes que se pueden hacer clic y que dirigen al usuario a una página que describe el error o la función que causa el error. Estas referencias se ven afectadas por docref_root y docref_ext.

La configuración es settable como PHP_INI_ALL, lo que significa que en cualquier lugar, incluida la secuencia de comandos. Así que para deshabilitar los errores html haga

ini_set('html_errors', false); 

al principio de su secuencia de comandos.

+0

¡Gracias, exactamente lo que estaba buscando! –

+0

Esto también funciona muy bien cuando xdebug está activado. Anteriormente llamaba a 'xdebug_disable()', pero eso ya no es necesario con esta variable. – hargobind

Cuestiones relacionadas