Menunjukkan semua kesalahan dan peringatan
UPDATE 2:
Saya sekarang telah dihapus berikut ini dari .file php:
<?php error_reporting( E_ALL ); ?>
Saya telah menetapkan display_erros di php.ini sebagai berikut:
display_errors = On
Kesalahan pelaporan ditetapkan sebagai berikut di php.ini
:
error_reporting = E_ALL | E_STRICT
Setelah restart Apache, aku masih tidak mendapatkan kesalahan/peringatan.
UPDATE 1:
Saya telah berubah error_reporting di php.ini
dari:
error_reporting = E_ALL & ~E_DEPRECATED
untuk
error_reporting = E_ALL | E_STRICT
Setelah itu saya restart Apache, misalnya
/etc/init.d/apache2 restart
Tetapi halaman yang akan masih tidak menampilkan kesalahan/peringatan apapun.
PERTANYAAN AWAL:
Skrip berikut ini adalah menghasilkan sebuah peringatan karena $err berada di dalam pernyataan if. Mengapa peringatan ini tidak ditampilkan pada halaman PHP di web browser?
Aku harus melihat Apache log untuk melihat peringatan. Juga, jika aku sengaja mengubah "masukkan ke" untuk "hapus ke", tidak menampilkan pesan kesalahan pada halaman PHP. Mengapa kesalahan-kesalahan yang tidak ditampilkan pada halaman 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>
Menampilkan kesalahan bisa dimatikan di
php.ini
atau file konfigurasi Apache.Anda dapat mengubahnya di dalam script:
Anda akan melihat pesan yang sama di PHP error log.
Langsung dari php.ini file:
Murni untuk pengembangan aku pergi untuk:
Juga don't lupa untuk menempatkan display_errors untuk di
Setelah itu, restart server Apache pada Ubuntu:
Aku bisa mendapatkan semua kesalahan melalui kode di bawah ini:
Kesalahan PHP dapat ditampilkan oleh salah satu dari metode di bawah ini:
Untuk lebih jelasnya:
Menampilkan kesalahan PHP
Set ini pada
php.ini
:Dari halaman PHP anda, gunakan filter yang cocok untuk pelaporan kesalahan.
Pelapor dapat dibuat sesuai dengan kebutuhan.
Anda dapat melihat penjelasan rinci di sini.