CakeFest 2024: The Official CakePHP Conference

Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Hatalar ve Günlük Kaydı ile ilgili Yapılandırma Yönergeleri
İsim Öntanımlı Değişlik Yeri Sürüm Bilgisi
error_reporting NULL INI_ALL  
display_errors "1" INI_ALL  
display_startup_errors "1" INI_ALL PHP 8.0.0 öncesinde, öntanımlı değer "0" idi.
log_errors "0" INI_ALL  
log_errors_max_len "1024" INI_ALL PHP 8.0.0 ve sonrasında etkisisiz olup PHP 8.1.0 ve sonrasında kaldırılmıştır.
ignore_repeated_errors "0" INI_ALL  
ignore_repeated_source "0" INI_ALL  
report_memleaks "1" INI_ALL  
track_errors "0" INI_ALL PHP 7.2.0 ve sonrasında kullanımı önerilmemekte olup PHP 8.0.0'da kullanımdan kaldırılmıştır.
html_errors "1" INI_ALL  
xmlrpc_errors "0" INI_SYSTEM  
xmlrpc_error_number "0" INI_ALL  
docref_root "" INI_ALL  
docref_ext "" INI_ALL since PHP 4.3.2'den beri kullanılabilmektedir.
error_prepend_string NULL INI_ALL  
error_append_string NULL INI_ALL  
error_log NULL INI_ALL  
error_log_mode 0o644 INI_ALL Available as of PHP 8.2.0
syslog.facility "LOG_USER" INI_SYSTEM PHP 7.3.0 ve sonrasında mevcuttur.
syslog.filter "no-ctrl" INI_ALL PHP 7.3.0 ve sonrasında mevcuttur.
syslog.ident "php" INI_SYSTEM PHP 7.3.0 ve sonrasında mevcuttur.
INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

error_reporting int

Hata raporlama seviyesini tanımlar. Bağımsız değişken olarak ya bir bit alanını ifade eden bir tamsayı ya da isimli sabitler verilebilir. Hata raporlama seviyeleri ve sabitleri Öntanımlı Sabitler sayfasında ve php.ini içinde açıklanmıştır. Hata raporlama seviyesini çalışma anında belirtmek için error_reporting() işlevini kullanabilirsiniz. Ayrıca, display_errors yönergesine de bakınız.

E_ALL öntanımlıdır.

PHP 8.0.0 öncesinde, öntanımlı değer E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED idi. Yani, E_NOTICE, E_STRICT ve E_DEPRECATED seviyesinden hatalar gösterilmiyordu.

Bilginize: PHP dışında PHP sabitleri

httpd.conf gibi PHP dışı yerlerde PHP sabitlerini kullanmak isterseniz, bunların tamsayı değerlerini kullanmak zorunda kalmak anlamlarını anlamayı zorlaştırdığı için elverişli olmayacaktır. Zamanla başka hata seviyeleri ekleneceğinden azami değer de (E_ALL değeri) değişecektir. Bu bakımdan E_ALL yerine şimdiki ve gelecekteki tüm bit alanlarını kapsamak üzere 2147483647 gibi büyük bir değer kullanabilirsiniz (E_ALL'dan başka tüm hataları da içerir).

display_errors string

Hataların çıktının bir parçası olarak ekrana basılıp basılmayacağını veya bunların kullanıcıdan gizlenip gizlenmeyeceğini belirler.

"stderr" değeri hataları stdout (standart çıktı) yerine stderr'e (standart hataya) gönderir.

Bilginize:

Bu özellik sizi geliştirme aşamasında desteklemek amacıyla konmuştur ve kullanıcıya yönelik işlemler için asla kullanılmamalıdır.

Bilginize:

Bu yönergeye çalışma anında (ini_set() ile) değer atanabilse de, eğer betik ölümcül bir hataya sahipse bunun herhangi bir etkisi olmayacaktır. Bunun sebebi çalışma anında istenen eylemin yerine getirilmeyecek olmasıdır.

display_startup_errors bool

display_errors etkin olsa bile PHP ilk başlatılırken oluşan hatalar gösterilmez. Hata ayıklamıyorsanız display_startup_errors yönergesinin değerini off olarak bırakın.

log_errors bool

Betiğin hata iletilerinin sunucunun hata günlüğüne veya error_log ile belirtilen dosyaya kaydedilip kaydedilmeyeceğini belirler. Bu seçenek sunucuya özgüdür.

Bilginize:

Sitenizde hataları kullanıcıya göstermek yerine hata günlüklerine kaydetmenizi hararetle tavsiye ederiz.

log_errors_max_len int

Hata günlüğü iletilerinin azami uzunluğunu bayt cinsinden belirlemek için kullanılır. Kaynak hakkındaki error_log bilgisi buna eklenir. 1024 öntanımlı değer olup, 0 belirtildiği takdirde hata günlüğü iletilerininin uzunlukları sınırlanmaz. Bu uzunluk günlüğe kaydedilen ve gösterilen hata iletilerinden başka $php_errormsg iletilerine de uygulanır fakat error_log() gibi açıkça çağrılan işlevlerde uygulanmaz.

int türünde bir değer kullanıldığında değer baytların sayısıdır. Büyük bayt değerleri için kullanılabilecek birimlerin gösterimleri hakkında bilgiyi bu SSS altında bulabilirsiniz.
ignore_repeated_errors bool

Yinelenen hata iletileri günlüğe kaydedilmez. ignore_repeated_source yönergesinin değeri true olmadıkça yinelenen hataların aynı dosyanın aynı satırında oluşması gerekir.

ignore_repeated_source bool

Yinelenen iletiler yok sayılırken ileti kaynağının da yoksayılmasını sağlar. Bu yönergenin değeri On olduğu takdirde, farklı dosyalardan veya farklı satırlardan kaynaklanan yinelenmiş iletileri hata günlüklerine kaydedemezsiniz.

report_memleaks bool

Bu yönergenin değeri Off olduğu takdirde, bellek sızıntıları (stdout'ta veya günlük dosyasında) gösterilmez. Bu sadece, hata ayıklama derlemesinde ve error_reporting yönergesinde E_WARNING listeye dahil edilmişse etkilidir.

track_errors bool

Bu yönergenin değeri On olduğu takdirde, son hata iletisi daima $php_errormsg değişkenine atanır.

html_errors bool

Hata iletilerine HTML etiketleri dahil edilmez. Yeni HTML hataları biçeminde, doğrudan kullanıcıyı hatayı veya hataya sebep olan işlemi açıklayan bir sayfaya yönlendiren tıklanabilir hatalar üretilir. Bu gönderimler docref_root ve docref_ext yönergelerinden etkilenir.

xmlrpc_errors bool

Normal hata raporlaması kapatılıp, hatalar XML-RPC hata iletileri olarak biçemlenir.

xmlrpc_error_number int

XML-RPC hata dizisinin faultCode elemanının değeri olarak bu değer kullanılır (bkz. xmlrpc_is_fault()).

docref_root string

Yeni hata biçemi, hatayı veya hataya sebep olan işlemi açıklayan bir sayfaya bir gönderim içerir. Bu gönderimin bir kılavuz sayfasına yönlendirmesi durumunda, kılavuzun dilinizdeki çevirisini indirebilir ve bu yerel kopyanın bulunduğu yeri bu yönergede belirtebilirsiniz. Örneğin, kılavuzun yerel kopyasına "/manual/" ile erişilebiliyorsa bunu docref_root=/manual/ şeklinde belirtebilirsiniz. Buna ek olarak, kopyanızın dosya uzantısını docref_ext yönergesinde belirtebilirsiniz (örnek: docref_ext=.html). Harici kaynaklara gönderimler de mümkündür. Örnekler: docref_root=http://manual/en/ veya docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"

Bazı durumlarda docref_root değerinin sonuna bir bölü çizgisi "/" eklemeniz gerekebilir. Fakat yukarıdaki ikinci örnekteki gibi bir durumda buna asla gerek yoktur.

Bilginize:

Bu özellik, bir işlevin açıklamasına bakmayı kolaylaştırması nedeniyle daha ziyade geliştirme aşamasında kullanmanız için tasarlanmıştır. Hataları son kullanıcıya göstermek amacıyla kullanılmamalıdır.

docref_ext string

docref_root yönergesine bakınız.

Bilginize:

docref_ext değeri bir nokta "." ile başlamalıdır.

error_prepend_string string

Hata iletisinden önce çıktılanacak dizge. Sadece hata iletisi ekranda gösterilecekse kullanılır. Asıl amaç hata iletisinin önüne HTML kodu ekleyebilmeyi mümkün kılmaktır.

error_append_string string

Bir hata iletisinden sonra çıktılanacak dizge. Sadece hata iletisi ekranda gösterilecekse kullanılır. Asıl amaç hata iletisinin ardına HTML kodu ekleyebilmeyi mümkün kılmaktır.

error_log string

Hataların kaydedileceği dosyanın adı. Dosya, HTTP sunucunun kullanıcısı tarafından yazılabilir olmalıdır. Eğer syslog özel değeri kullanılmışsa hatalar bir dosya yerine sistemin hata günlüğüne gönderilir (Unix'te syslog(3), Windows NT'de olay günlüğü). Windows 95'te sistem günlükçüsü desteği yoktur. Ayrıca, syslog() işlevine de bakınız. Yönerge tanımsız bırakılmışsa hatalar SAPI hata günlükçüsüne gönderilir. Örneğin bu, Apache'nin hata günlüğü veya CLI için stderr olabilir.

error_log_mode int

error_log yönergesine atanan dosya için dosya kipi.

syslog.facility string

İletiyi ne tür bir uygulamanın günlüklediğini belirtir. Sadece "syslog" içinde error_log etkinse etkilidir.

syslog.filter string

Günlüklenen iletileri süzecek süzgeçleri belirler. İzin verilen karakterler değiştirilmeden yazılır. Diğerleri \x ile öncelenen onaltılık karşılıkları ile belirtilir.

  • all – Günlüklenen ileti satır sonu karakterinden bölünür ve tüm karakterler değiştirilmeden aktarılır.
  • no-ctrl – Günlüklenen ileti satır sonu karakterinden bölünür ve basılamayan 7 bitlik ASCII karakterler öncelenir.
  • ascii – Günlüklenen ileti satır sonu karakterinden bölünür ve basılamayan karakterler öncelenir.
  • raw – Tüm karakterler değiştirilmeden ve iletiler satır sonu karakterleri ile bölünmeden sistem günlükleyicisine aktarılır (PHP 7.3 öncesindeki gibi).
Bu ayarlar error_log ini yönergesine "syslog" atandıktan sonra yapılan syslog() çağrıları ile etkisini gösterir.

Bilginize:

raw süzgeç türü PHP 7.3.8 ve PHP 7.4.0 üstü sürümlerle kullanılabilir.

Bu yönerge Windows üzerinde desteklenmez.
syslog.ident string

Specifies the ident string which is prepended to every message. Only effective if error_log is set to "syslog".

add a note

User Contributed Notes 2 notes

up
24
cjakeman at bcs dot org
15 years ago
Using
<?php ini_set('display_errors', 1); ?>
at the top of your script will not catch any parse errors. A missing ")" or ";" will still lead to a blank page.

This is because the entire script is parsed before any of it is executed. If you are unable to change php.ini and set

display_errors On

then there is a possible solution suggested under error_reporting:

<?php
error_reporting
(E_ALL);
ini_set("display_errors", 1);
include(
"file_with_errors.php");
?>


[Modified by moderator]

You should also consider setting error_reporting = -1 in your php.ini and display_errors = On if you are in development mode to see all fatal/parse errors or set error_log to your desired file to log errors instead of display_errors in production (this requires log_errors to be turned on).
up
5
ohcc at 163 dot com
7 years ago
If you set the error_log directive to a relative path, it is a path relative to the document root rather than php's containing folder.
To Top