Mise à JOUR 2:
J'ai maintenant supprimé à la suite de l' .fichier php:
<?php error_reporting( E_ALL ); ?>
J'ai mis display_erros en php.ini comme suit:
display_errors = on
les rapports d'erreurs est la suivante en php.ini
error_reporting = E_ALL | E_STRICT
Après le redémarrage d'apache, je reçois toujours pas les erreurs/avertissements.
Mise à JOUR 1:
J'ai changé la fonction error_reporting en php.ini à partir de:
error_reporting = E_ALL & ~De niveau e_deprecated à partir
pour
error_reporting = E_ALL | E_STRICT
Après j'ai redémarré apache, par exemple
/etc/init.d/apache2 restart
Mais la page ne sera toujours pas afficher les erreurs/avertissements de toute nature.
QUESTION DE DÉPART:
Le script suivant est de générer un avertissement, car l' $err étant à l'intérieur de l'instruction if. Pourquoi cet avertissement ne s'affiche pas sur la page php dans un navigateur web? J'ai regarder les logs apache pour voir l'avertissement. Aussi, si je delibarately changer le "insert into" à "supprimer", il n'affiche pas d'erreur sur la page php. Pourquoi sont les erreurs à ne pas afficher sur la page php?
<?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>