Yanıtlar:
Aşağıdaki kodu kullanın:
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
Ardından dosyayı izleyin:
tail -f /tmp/php-error.log
Veya 2008'deki bu blog girişindephp.ini
açıklandığı şekilde güncelleyin .
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log
. Bkz perishablepress.com/…
tmp/php-error.log
istediğiniz herhangi bir konuma değiştirdiniz mi?
Görmek
error_log
- Bir yere hata mesajı gönderinMisal
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Sen edebilirsiniz kendi hata işleyicileri ile, hata işleme özelleştirmek günlükte gereken bir hata veya uyarı ya da her türlü oluştuğunda sizin için bu işlevi çağırmak için. Ek bilgi için lütfen PHP Kılavuzundaki Hata İşleme bölümüne bakın.
Bu kodları PHP / index dosyanızın üstüne koymanız yeterlidir:
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
ASLA canlı bir prodüksiyon sunucusunda açılmamalıdır - bu direktif özellikle kullanıcıya çıktı içindir ve günlük kaydı üzerinde hiçbir etkisi yoktur. php.net/manual/tr/…
bu kodu .htaccess dosyasına ekleyin ( php.ini / ini_set işlevine alternatif olarak ):
<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>
* yorumlandığı gibi: bu, Apache tipi sunucular içindir, Nginx veya diğerleri için değildir .
Bu benim kişisel kısa fonksiyonum
# 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);
}
log_errors
Php.ini dosyasındaki yapılandırma seçeneğine bir göz atın . Sadece istediğinizi yapıyor gibi görünüyor. Bence sen-ebilmek kullanmaerror_log
kendi günlük dosyası ayarlamak için seçeneği .
Ne zaman log_errors
direktif olarak ayarlanır On
, PHP tarafından bildirilen herhangi bir hata sunucu günlüğüne veya belirtilen dosyaya kaydedilir olacaktır error_log
. Bu seçenekleri aşağıdakilerle ayarlayabilirsiniz:ini_set
Gerekirse .
( display_errors
Bu seçenek etkinleştirilirse php.ini dosyasında devre dışı bırakılması gerektiğini lütfen unutmayın )
display_errors
Etkinleştirdiyseniz neden devre dışı bırakılmalıdır log_errors
? Bence mantıklı değil. :)
ini_set
yalnızca bu kod yürütüldüğünde çalışır. Ayrıştırma hataları olan kod için yararlı değildir çünkü hata kod yürütülmeden önce olacaktır . Bunun yerine php.ini dosyasına bu değişiklikleri yazın.