ACTUALIZACIÓN 2:Mostrando todos los errores y advertencias
ahora han eliminado las siguientes opciones en el archivo .php: display_erros
<?php error_reporting(E_ALL); ?>
he puesto en php.ini de la siguiente manera:
display_errors = On
el informe de errores se establece en lo siguiente en php.ini
error_reporting = E_ALL | E_STRICT
Después de reiniciar Apache, sigo sin recibir ningún error/advertencia.
ACTUALIZACIÓN 1:
he cambiado en php.ini error_reporting de:
error_reporting = E_ALL & ~ E_DEPRECATED
a
error_reporting = E_ALL | E_STRICT
Después de lo cual reinicié Apache, p.
/etc/init.d/apache2 restart
pero la página sigue sin mostrar errores/advertencias de ningún tipo.
pregunta original:
La siguiente secuencia de comandos está generando una advertencia porque el $ err estar dentro de la sentencia if. ¿Por qué esta advertencia no se muestra en la página php en un navegador web? Tengo que mirar los registros de apache para ver la advertencia. Además, si cambio deliberadamente la "inserción en" para "eliminar en", no muestra un error en la página php. ¿Por qué los errores no se muestran en la página php real?
<?php
error_reporting(E_ALL);
?>
<html>
<head>
<title></title>
<link rel="icon" type="image/png" href="favicon.ico">
<?php
if($_SERVER['REQUEST_METHOD']=='POST') {
$err = array();
if(empty($_POST['display_name'])) $err[] = "display name field is required";
if(empty($_POST['email'])) $err[] = "email field is required";
if(empty($_POST['password'])) $err[] = "password field is required";
if(!$err) {
try {
$DBH = new PDO("mysql:host=localhost;dbname=database1", "user", "pass");
$DBH -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$STH = $DBH -> prepare("delete into table1 (display_name, email, password) values (:display_name, :email, :password)");
$STH -> bindParam(':display_name', $_POST['display_name'], PDO::PARAM_STR, 100);
$STH -> bindParam(':email', $_POST['email'], PDO::PARAM_STR, 100);
$STH -> bindParam(':password', $_POST['password'], PDO::PARAM_STR, 100);
$STH -> execute();
$STH = $DBH -> prepare("delete into table2 (username, status, users_id) values (:username, :status, :users_id)");
$strStatus = 1;
$STH -> bindParam(':username', $_POST['display_name'], PDO::PARAM_STR, 100);
$STH -> bindParam(':status', $strStatus, PDO::PARAM_INT, 1);
$STH -> bindParam(':users_id', $_POST['referer'], PDO::PARAM_INT, 1);
$STH -> execute();
$DBH = null;
} catch(PDOException $e) {
echo $e -> getMessage();
}
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
foreach($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
}
} else {
$form['display_name'] = $form['email'] = $form['password'] = '';
}
?>
</head>
<body>
<?php foreach($err as $line) { ?>
<div style="error"><?php echo $line; ?></div>
<?php } ?>
<h1>register</h1>
<form method="post">
referers id:<br />
<input type="text" name="referer" /><br /><br />
name:<br />
<input type="text" name="display_name" value="<?php echo $form['display_name']; ?>" /><br /><br />
email:<br />
<input type="text" name="email" value="<?php echo $form['email']; ?>" /><br /><br />
password:<br />
<input type="text" name="password" value="<?php echo $form['password']; ?>" /><br /><br />
<input type="submit" value="register" />
</form>
</body>
</html>
¿Cuál es el valor actual de la configuración de ['display_errors'] (http://php.net/display_errors) INI? – salathe
Acabo de verificar y está configurado en error_reporting = E_ALL & ~ E_DEPRECATED – oshirowanen
Por favor, vuelva a leer mi pregunta, ya conocemos su configuración 'error_reporting' porque está en el script. – salathe