Jawaban:
Gunakan kode berikut:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Kemudian tonton file:
tail -f /tmp/php-error.log
Atau perbarui php.ini
sebagaimana dijelaskan dalam entri blog ini mulai 2008.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log
. Lihat perishablepress.com/...
tmp/php-error.log
lokasi mana yang Anda inginkan?
Lihat
error_log
- Kirim pesan kesalahan di suatu tempatContoh
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Anda dapat menyesuaikan penanganan kesalahan dengan penangan kesalahan Anda sendiri untuk memanggil fungsi ini untuk Anda setiap kali terjadi kesalahan atau peringatan atau apa pun yang perlu Anda catat. Untuk informasi tambahan, silakan merujuk ke Penanganan Kesalahan Bab dalam Manual PHP
Masukkan kode-kode ini di atas file PHP / index Anda:
error_reporting(E_ALL); // Error/Exception engine, always use E_ALL
ini_set('ignore_repeated_errors', TRUE); // always use TRUE
ini_set('display_errors', FALSE); // Error/Exception display, use FALSE only in production environment or real server. Use TRUE in development environment
ini_set('log_errors', TRUE); // Error/Exception file logging engine.
ini_set('error_log', 'your/path/to/errors.log'); // Logging file path
display_errors
harus TIDAK AKAN dinyalakan pada server produksi langsung - arahan itu khusus untuk output ke pengguna, dan tidak berpengaruh pada logging. php.net/manual/en/…
tambahkan kode ini dalam .htaccess (sebagai alternatif fungsi php.ini / ini_set ):
<IfModule mod_php5.c>
php_flag log_errors on
php_value error_log ./path_to_MY_PHP_ERRORS.log
# php_flag display_errors on
</IfModule>
* seperti yang dikomentari: ini untuk server jenis Apache , dan bukan untuk Nginx atau yang lainnya.
Itu fungsi pendek pribadi saya
# logging
/*
[2017-03-20 3:35:43] [INFO] [file.php] Here we are
[2017-03-20 3:35:43] [ERROR] [file.php] Not good
[2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty
mylog ('hallo') -> INFO
mylog ('fail', 'e') -> ERROR
mylog ('next', 'd') -> DEBUG
mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log
*/
function mylog($text, $level='i', $file='logs') {
switch (strtolower($level)) {
case 'e':
case 'error':
$level='ERROR';
break;
case 'i':
case 'info':
$level='INFO';
break;
case 'd':
case 'debug':
$level='DEBUG';
break;
default:
$level='INFO';
}
error_log(date("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file);
}
Lihatlah log_errors
opsi konfigurasi di php.ini. Tampaknya melakukan apa yang Anda inginkan. Saya pikir Anda dapat menggunakan error_log
opsi untuk mengatur file logging Anda sendiri juga.
Ketika log_errors
arahan diatur ke On
, kesalahan yang dilaporkan oleh PHP akan dicatat ke log server atau file yang ditentukan error_log
. Anda dapat mengatur opsi ini ini_set
juga, jika perlu.
(Harap dicatat bahwa display_errors
harus dinonaktifkan di php.ini jika opsi ini diaktifkan)
display_errors
dinonaktifkan jika Anda mengaktifkan log_errors
? Tidak masuk akal menurut saya. :)
ini_set
hanya berfungsi jika kode itu dijalankan. Tidak berguna untuk kode yang memiliki kesalahan parse karena kesalahan akan terjadi sebelum kode dieksekusi. Alih-alih tulis perubahan itu ke dalam php.ini.