{"id":3917,"date":"2026-01-01T18:14:21","date_gmt":"2026-01-01T15:14:21","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/php-hata-kayitlarini-dogru-yapilandirmak-display_errors-error_log-ve-log_level\/"},"modified":"2026-01-01T18:14:21","modified_gmt":"2026-01-01T15:14:21","slug":"php-hata-kayitlarini-dogru-yapilandirmak-display_errors-error_log-ve-log_level","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/php-hata-kayitlarini-dogru-yapilandirmak-display_errors-error_log-ve-log_level\/","title":{"rendered":"PHP Hata Kay\u0131tlar\u0131n\u0131 Do\u011fru Yap\u0131land\u0131rmak: display_errors, error_log ve log_level"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#PHP_Hata_Kayitlarini_Neden_Ciddiye_Almalisiniz\"><span class=\"toc_number toc_depth_1\">1<\/span> PHP Hata Kay\u0131tlar\u0131n\u0131 Neden Ciddiye Almal\u0131s\u0131n\u0131z?<\/a><\/li><li><a href=\"#Temel_Kavramlar_display_errors_log_errors_error_log_ve_error_reporting\"><span class=\"toc_number toc_depth_1\">2<\/span> Temel Kavramlar: display_errors, log_errors, error_log ve error_reporting<\/a><ul><li><a href=\"#display_errors_Hatalari_ekrana_basmak\"><span class=\"toc_number toc_depth_2\">2.1<\/span> display_errors: Hatalar\u0131 ekrana basmak<\/a><\/li><li><a href=\"#log_errors_Hatalari_dosyaya_yazmak\"><span class=\"toc_number toc_depth_2\">2.2<\/span> log_errors: Hatalar\u0131 dosyaya yazmak<\/a><\/li><li><a href=\"#error_log_Log_dosyasinin_yolu\"><span class=\"toc_number toc_depth_2\">2.3<\/span> error_log: Log dosyas\u0131n\u0131n yolu<\/a><\/li><li><a href=\"#error_reporting_log_level_Hangi_seviyeye_kadar_loglanacagini_belirlemek\"><span class=\"toc_number toc_depth_2\">2.4<\/span> error_reporting (log_level): Hangi seviyeye kadar loglanaca\u011f\u0131n\u0131 belirlemek<\/a><\/li><\/ul><\/li><li><a href=\"#Gelistirme_Test_ve_Canli_Ortam_Icin_Farkli_Stratejiler\"><span class=\"toc_number toc_depth_1\">3<\/span> Geli\u015ftirme, Test ve Canl\u0131 Ortam \u0130\u00e7in Farkl\u0131 Stratejiler<\/a><ul><li><a href=\"#Gelistirme_ortami_icin_ideal_ayarlar\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Geli\u015ftirme ortam\u0131 i\u00e7in ideal ayarlar<\/a><\/li><li><a href=\"#StagingTest_ortami_icin_denge\"><span class=\"toc_number toc_depth_2\">3.2<\/span> Staging\/Test ortam\u0131 i\u00e7in denge<\/a><\/li><li><a href=\"#Canli_production_ortam_icin_guvenli_ve_temiz_konfigurasyon\"><span class=\"toc_number toc_depth_2\">3.3<\/span> Canl\u0131 (production) ortam i\u00e7in g\u00fcvenli ve temiz konfig\u00fcrasyon<\/a><\/li><\/ul><\/li><li><a href=\"#PHP_Hata_Loglarini_Nereye_ve_Nasil_Yazdirmali\"><span class=\"toc_number toc_depth_1\">4<\/span> PHP Hata Loglar\u0131n\u0131 Nereye ve Nas\u0131l Yazd\u0131rmal\u0131?<\/a><ul><li><a href=\"#Merkezi_log_dosyasi_mi_site_bazli_log_mu\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Merkezi log dosyas\u0131 m\u0131, site bazl\u0131 log mu?<\/a><\/li><li><a href=\"#phpini_htaccess_ve_ini_set_arasindaki_fark\"><span class=\"toc_number toc_depth_2\">4.2<\/span> php.ini, .htaccess ve ini_set aras\u0131ndaki fark<\/a><\/li><li><a href=\"#Log_dosyasi_izinleri_ve_guvenlik\"><span class=\"toc_number toc_depth_2\">4.3<\/span> Log dosyas\u0131 izinleri ve g\u00fcvenlik<\/a><\/li><li><a href=\"#Log_dosyalarinin_sismesini_onlemek_logrotate_ve_disk_kullanimi\"><span class=\"toc_number toc_depth_2\">4.4<\/span> Log dosyalar\u0131n\u0131n \u015fi\u015fmesini \u00f6nlemek: logrotate ve disk kullan\u0131m\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Dogru_log_level_error_reporting_Secimi\"><span class=\"toc_number toc_depth_1\">5<\/span> Do\u011fru log_level (error_reporting) Se\u00e7imi<\/a><ul><li><a href=\"#E_ALL_her_zaman_iyi_mi\"><span class=\"toc_number toc_depth_2\">5.1<\/span> E_ALL her zaman iyi mi?<\/a><\/li><li><a href=\"#Canli_ortam_icin_pratik_bir_seviye\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Canl\u0131 ortam i\u00e7in pratik bir seviye<\/a><\/li><li><a href=\"#Deprecation_E_DEPRECATED_uyarilarini_ne_yapmali\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Deprecation (E_DEPRECATED) uyar\u0131lar\u0131n\u0131 ne yapmal\u0131?<\/a><\/li><\/ul><\/li><li><a href=\"#Guvenlik_Performans_ve_Yasal_Boyut\"><span class=\"toc_number toc_depth_1\">6<\/span> G\u00fcvenlik, Performans ve Yasal Boyut<\/a><ul><li><a href=\"#Guvenlik_Hata_mesajlarinda_veri_sizintisi\"><span class=\"toc_number toc_depth_2\">6.1<\/span> G\u00fcvenlik: Hata mesajlar\u0131nda veri s\u0131z\u0131nt\u0131s\u0131<\/a><\/li><li><a href=\"#Performans_Cok_fazla_log_yazmanin_bedeli\"><span class=\"toc_number toc_depth_2\">6.2<\/span> Performans: \u00c7ok fazla log yazman\u0131n bedeli<\/a><\/li><li><a href=\"#KVKKGDPR_ve_log_anonimlestirme\"><span class=\"toc_number toc_depth_2\">6.3<\/span> KVKK\/GDPR ve log anonimle\u015ftirme<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_Ortaminda_Pratik_Oneriler\"><span class=\"toc_number toc_depth_1\">7<\/span> DCHost Ortam\u0131nda Pratik \u00d6neriler<\/a><ul><li><a href=\"#Paylasimli_hosting_kullanicilari_icin\"><span class=\"toc_number toc_depth_2\">7.1<\/span> Payla\u015f\u0131ml\u0131 hosting kullan\u0131c\u0131lar\u0131 i\u00e7in<\/a><\/li><li><a href=\"#VPS_ve_dedicated_sunucu_kullanicilari_icin\"><span class=\"toc_number toc_depth_2\">7.2<\/span> VPS ve dedicated sunucu kullan\u0131c\u0131lar\u0131 i\u00e7in<\/a><\/li><li><a href=\"#DCHost_ekibinin_sik_kullandigi_kontrol_listesi\"><span class=\"toc_number toc_depth_2\">7.3<\/span> DCHost ekibinin s\u0131k kulland\u0131\u011f\u0131 kontrol listesi<\/a><\/li><\/ul><\/li><li><a href=\"#Ozet_ve_Sonraki_Adimlar\"><span class=\"toc_number toc_depth_1\">8<\/span> \u00d6zet ve Sonraki Ad\u0131mlar<\/a><\/li><\/ul><\/div>\n<h2><span id=\"PHP_Hata_Kayitlarini_Neden_Ciddiye_Almalisiniz\">PHP Hata Kay\u0131tlar\u0131n\u0131 Neden Ciddiye Almal\u0131s\u0131n\u0131z?<\/span><\/h2>\n<p>PHP ile \u00e7al\u0131\u015fan her projede, ister k\u00fc\u00e7\u00fck bir kurumsal site ister yo\u011fun trafikli bir e-ticaret altyap\u0131s\u0131 olsun, hata kay\u0131tlar\u0131n\u0131n nas\u0131l tutuldu\u011fu do\u011frudan projenin s\u00fcrd\u00fcr\u00fclebilirli\u011fini etkiler. Bir\u00e7ok ekibin ya\u015fad\u0131\u011f\u0131 ortak sorun \u015fu: \u00dcretim ortam\u0131nda ara ara \u00e7\u0131kan beyaz sayfalar, rastgele 500 hatalar\u0131 veya kaybolan formlar\u2026 Sunucuda asl\u0131nda ne oldu\u011funu g\u00f6remeyince sorunlar ya tahmin edilerek \u00e7\u00f6z\u00fclmeye \u00e7al\u0131\u015f\u0131l\u0131yor ya da zamanla kronikle\u015fiyor. Oysa do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f <strong>display_errors<\/strong>, <strong>error_log<\/strong> ve <strong>error_reporting (log_level)<\/strong> ayarlar\u0131yla hem geli\u015ftirme s\u00fcrecini h\u0131zland\u0131rmak hem de canl\u0131 ortam\u0131 g\u00fcvenli ve stabil tutmak m\u00fcmk\u00fcn.<\/p>\n<p>DCHost olarak onlarca PHP uygulamas\u0131n\u0131 ta\u015f\u0131d\u0131\u011f\u0131m\u0131z ve sorun giderdi\u011fimiz projelerde g\u00f6rd\u00fc\u011f\u00fcm\u00fcz en temel eksik, hata loglar\u0131n\u0131n ya hi\u00e7 a\u00e7\u0131lmam\u0131\u015f olmas\u0131 ya da tersine, her \u015feyin ekrana bas\u0131ld\u0131\u011f\u0131 riskli ve da\u011f\u0131n\u0131k yap\u0131land\u0131rmalar. Bu yaz\u0131da g\u00fcnl\u00fck hayatta ger\u00e7ekten i\u015finize yarayacak; geli\u015ftirme, test ve canl\u0131 ortamlar i\u00e7in pratik PHP hata kayd\u0131 stratejilerini, tipik konfig\u00fcrasyon tuzaklar\u0131n\u0131 ve log dosyalar\u0131n\u0131 b\u00fcy\u00fctmeden y\u00f6netmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Ek olarak, PHP loglar\u0131n\u0131 web sunucu loglar\u0131 ve disk kullan\u0131m kontrol\u00fcyle birlikte nas\u0131l d\u00fc\u015f\u00fcnmeniz gerekti\u011fini de somut \u00f6rneklerle anlataca\u011f\u0131z.<\/p>\n<h2><span id=\"Temel_Kavramlar_display_errors_log_errors_error_log_ve_error_reporting\">Temel Kavramlar: display_errors, log_errors, error_log ve error_reporting<\/span><\/h2>\n<p>Ba\u015flamadan \u00f6nce PHP taraf\u0131nda en \u00e7ok kar\u0131\u015ft\u0131r\u0131lan d\u00f6rt temel ayar\u0131 netle\u015ftirelim: <strong>display_errors<\/strong>, <strong>log_errors<\/strong>, <strong>error_log<\/strong> ve <strong>error_reporting<\/strong>. Bu d\u00f6rd\u00fc birlikte, hatalar\u0131n <em>nerede<\/em> g\u00f6r\u00fcnece\u011fini, <em>nereye<\/em> yaz\u0131laca\u011f\u0131n\u0131 ve <em>hangi seviyeye kadar<\/em> loglanaca\u011f\u0131n\u0131 belirler.<\/p>\n<h3><span id=\"display_errors_Hatalari_ekrana_basmak\">display_errors: Hatalar\u0131 ekrana basmak<\/span><\/h3>\n<p><strong>display_errors<\/strong>, PHP hatalar\u0131n\u0131n HTTP \u00e7\u0131kt\u0131s\u0131na (sayfaya) yaz\u0131l\u0131p yaz\u0131lmayaca\u011f\u0131n\u0131 belirler. En kritik noktalardan biri budur.<\/p>\n<p>Temel de\u011ferler:<\/p>\n<ul>\n<li><strong>display_errors = On<\/strong>: Hatalar direkt olarak kullan\u0131c\u0131ya (veya geli\u015ftiriciye) g\u00f6sterilir.<\/li>\n<li><strong>display_errors = Off<\/strong>: Hatalar sayfaya bas\u0131lmaz, sadece loglan\u0131r (log_errors a\u00e7\u0131ksa).<\/li>\n<\/ul>\n<p><strong>Geli\u015ftirme ortam\u0131nda<\/strong> genellikle <code>display_errors = On<\/code> kullanmak hayat kurtar\u0131c\u0131d\u0131r; hatay\u0131 an\u0131nda g\u00f6r\u00fcr, h\u0131zl\u0131ca d\u00fczeltirsiniz. Ancak <strong>canl\u0131 ortamda<\/strong> display_errors kesinlikle <strong>Off<\/strong> olmal\u0131d\u0131r. Aksi halde:<\/p>\n<ul>\n<li>Veritaban\u0131 ba\u011flant\u0131 bilgileri, dosya yollar\u0131, sunucu kullan\u0131c\u0131 adlar\u0131 gibi kritik bilgiler ziyaret\u00e7ilere if\u015fa olabilir.<\/li>\n<li>HTML \u00e7\u0131kt\u0131s\u0131 bozulur, \u00f6zellikle API veya JSON cevaplar\u0131nda hatalar ciddi entegrasyon sorunlar\u0131 yarat\u0131r.<\/li>\n<\/ul>\n<h3><span id=\"log_errors_Hatalari_dosyaya_yazmak\">log_errors: Hatalar\u0131 dosyaya yazmak<\/span><\/h3>\n<p><strong>log_errors<\/strong>, hatalar\u0131n bir log dosyas\u0131na yaz\u0131l\u0131p yaz\u0131lmayaca\u011f\u0131n\u0131 belirler.<\/p>\n<ul>\n<li><strong>log_errors = On<\/strong>: Hatalar belirlenen <code>error_log<\/code> yoluna yaz\u0131l\u0131r.<\/li>\n<li><strong>log_errors = Off<\/strong>: PHP hi\u00e7 log yazmaz; ancak web sunucusu (Apache\/Nginx) seviyesinde baz\u0131 hatalar g\u00f6r\u00fclebilir.<\/li>\n<\/ul>\n<p>Canl\u0131 ortamda <strong>log_errors her zaman On<\/strong> olmal\u0131d\u0131r. Aksi halde ara ara olu\u015fan, kullan\u0131c\u0131lar\u0131n \u201cbazen hata al\u0131yoruz\u201d diye tarif etti\u011fi problemleri geriye d\u00f6n\u00fck inceleme \u015fans\u0131n\u0131z olmaz.<\/p>\n<h3><span id=\"error_log_Log_dosyasinin_yolu\">error_log: Log dosyas\u0131n\u0131n yolu<\/span><\/h3>\n<p><strong>error_log<\/strong>, PHP hatalar\u0131n\u0131n kaydedilece\u011fi dosyan\u0131n yolunu belirler. \u00d6rnek:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">error_log = \/var\/log\/php-errors.log\n<\/code><\/pre>\n<p>Payla\u015f\u0131ml\u0131 hosting ortamlar\u0131nda bu ayar kimi zaman PHP-FPM havuzunda veya kullan\u0131c\u0131 bazl\u0131 olarak \u00f6nceden tan\u0131ml\u0131d\u0131r; \u00e7o\u011fu zaman <code>~\/logs<\/code> klas\u00f6r\u00fc gibi bir yol kullan\u0131l\u0131r. <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> veya <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>da ise yolu kendiniz belirlemeniz gerekebilir.<\/p>\n<p>Dikkat edilmesi gerekenler:<\/p>\n<ul>\n<li>Log dosyas\u0131, PHP\u2019nin yazma iznine sahip oldu\u011fu bir klas\u00f6rde olmal\u0131.<\/li>\n<li>Log klas\u00f6r\u00fcn\u00fcn izinleri g\u00fcvenli olmal\u0131 (\u00f6rne\u011fin 750\/700 ve sadece ilgili kullan\u0131c\u0131 taraf\u0131ndan eri\u015filebilir).<\/li>\n<li>Tek bir devasa dosya yerine, logrotate gibi ara\u00e7larla d\u00f6nen (rotated) log yap\u0131s\u0131 tercih edilmeli.<\/li>\n<\/ul>\n<h3><span id=\"error_reporting_log_level_Hangi_seviyeye_kadar_loglanacagini_belirlemek\">error_reporting (log_level): Hangi seviyeye kadar loglanaca\u011f\u0131n\u0131 belirlemek<\/span><\/h3>\n<p><strong>error_reporting<\/strong>, hangi t\u00fcr PHP hatalar\u0131n\u0131n loglanaca\u011f\u0131n\u0131 tan\u0131mlar. S\u0131kl\u0131kla \u201clog_level\u201d olarak adland\u0131r\u0131l\u0131r. \u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">error_reporting = E_ALL &amp; ~E_NOTICE &amp; ~E_DEPRECATED\n<\/code><\/pre>\n<p>Ba\u015fl\u0131ca hata t\u00fcrleri:<\/p>\n<ul>\n<li><strong>E_ERROR<\/strong>: \u00d6l\u00fcmc\u00fcl hatalar, script \u00e7al\u0131\u015fmay\u0131 durdurur.<\/li>\n<li><strong>E_WARNING<\/strong>: Uyar\u0131lar, script devam eder ama beklenmedik davran\u0131\u015flar olabilir.<\/li>\n<li><strong>E_NOTICE<\/strong>: Bilgilendirme; genelde tan\u0131ms\u0131z de\u011fi\u015fken kullan\u0131m\u0131 gibi \u201ck\u00f6t\u00fc pratik\u201dler.<\/li>\n<li><strong>E_DEPRECATED<\/strong>: Gelecekte kald\u0131r\u0131lacak fonksiyon, \u00f6zellik kullan\u0131m\u0131.<\/li>\n<li><strong>E_ALL<\/strong>: T\u00fcm hata t\u00fcrleri.<\/li>\n<\/ul>\n<p>Do\u011fru error_reporting seviyesi, geli\u015ftirme ve canl\u0131 ortamda farkl\u0131 olmal\u0131d\u0131r. Buna birazdan detayl\u0131 de\u011finece\u011fiz.<\/p>\n<h2><span id=\"Gelistirme_Test_ve_Canli_Ortam_Icin_Farkli_Stratejiler\">Geli\u015ftirme, Test ve Canl\u0131 Ortam \u0130\u00e7in Farkl\u0131 Stratejiler<\/span><\/h2>\n<p>PHP hata loglamas\u0131n\u0131 tek ayarla t\u00fcm ortamlar i\u00e7in \u00e7\u00f6zmek m\u00fcmk\u00fcn de\u011fil. En sa\u011fl\u0131kl\u0131 yakla\u015f\u0131m, <strong>geli\u015ftirme<\/strong>, <strong>staging\/test<\/strong> ve <strong>canl\u0131<\/strong> ortam i\u00e7in ayr\u0131 konfig\u00fcrasyonlar kullanmak.<\/p>\n<h3><span id=\"Gelistirme_ortami_icin_ideal_ayarlar\">Geli\u015ftirme ortam\u0131 i\u00e7in ideal ayarlar<\/span><\/h3>\n<p>Geli\u015ftirme ortam\u0131nda temel \u00f6nceli\u011finiz, hatalar\u0131 m\u00fcmk\u00fcn oldu\u011funca erken ve g\u00f6r\u00fcn\u00fcr \u015fekilde yakalamakt\u0131r. \u00d6nerilen tipik yap\u0131land\u0131rma:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">display_errors = On\ndisplay_startup_errors = On\nlog_errors = On\nerror_log = \/var\/log\/php-dev-errors.log\nerror_reporting = E_ALL\n<\/code><\/pre>\n<p>Burada dikkat edilmesi gerekenler:<\/p>\n<ul>\n<li>Hem ekrana hem dosyaya log yazd\u0131\u011f\u0131n\u0131z i\u00e7in, sorunlar\u0131 hem anl\u0131k g\u00f6r\u00fcr hem de geriye d\u00f6n\u00fck inceleyebilirsiniz.<\/li>\n<li><strong>E_ALL<\/strong> ile t\u00fcm hata, uyar\u0131 ve deprecation mesajlar\u0131n\u0131 yakalars\u0131n\u0131z; framework veya eklentilerde gelecekte sorun \u00e7\u0131karabilecek k\u0131s\u0131mlar\u0131 da erkenden g\u00f6rm\u00fc\u015f olursunuz.<\/li>\n<li>Bu ortam internete a\u00e7\u0131k de\u011filse bile, kritik verilerin loglara yaz\u0131lmamas\u0131na \u00f6zen g\u00f6sterin (\u015fifreler, token\u2019lar vb.).<\/li>\n<\/ul>\n<h3><span id=\"StagingTest_ortami_icin_denge\">Staging\/Test ortam\u0131 i\u00e7in denge<\/span><\/h3>\n<p>Staging\/test ortam\u0131 canl\u0131ya en yak\u0131n yap\u0131 olmal\u0131, ama h\u00e2l\u00e2 hata yakalamak i\u00e7in daha konu\u015fkan (verbose) kalabilir. \u0130yi bir strateji:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">display_errors = Off\nlog_errors = On\nerror_log = \/var\/log\/php-staging-errors.log\nerror_reporting = E_ALL &amp; ~E_NOTICE\n<\/code><\/pre>\n<p>Burada:<\/p>\n<ul>\n<li>Hatalar ekrana bas\u0131lmaz; b\u00f6ylece HTML\/JSON \u00e7\u0131kt\u0131s\u0131 canl\u0131ya daha benzer olur.<\/li>\n<li><strong>E_NOTICE<\/strong> d\u0131\u015f\u0131ndaki her \u015fey loglan\u0131r; gereksiz g\u00fcr\u00fclt\u00fc b\u00fcy\u00fck oranda azal\u0131r.<\/li>\n<li>Staging ortam\u0131nda ger\u00e7ek kullan\u0131c\u0131 verisi kullan\u0131yorsan\u0131z, KVKK\/GDPR a\u00e7\u0131s\u0131ndan loglarda anonimizasyon yapmay\u0131 d\u00fc\u015f\u00fcnmelisiniz.<\/li>\n<\/ul>\n<h3><span id=\"Canli_production_ortam_icin_guvenli_ve_temiz_konfigurasyon\">Canl\u0131 (production) ortam i\u00e7in g\u00fcvenli ve temiz konfig\u00fcrasyon<\/span><\/h3>\n<p>Canl\u0131 ortamda temel hedef \u00fc\u00e7l\u00fcd\u00fcr: <strong>g\u00fcvenlik<\/strong>, <strong>stabilite<\/strong> ve <strong>izlenebilirlik<\/strong>. Tipik bir canl\u0131 konfig\u00fcrasyon \u015fu \u015fekilde olabilir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">display_errors = Off\nlog_errors = On\nerror_log = \/var\/log\/php-prod-errors.log\nerror_reporting = E_ALL &amp; ~E_NOTICE &amp; ~E_STRICT &amp; ~E_DEPRECATED\n<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma:<\/p>\n<ul>\n<li>Kullan\u0131c\u0131ya asla hata detay\u0131 g\u00f6stermez, sadece temiz bir 500 sayfas\u0131 veya uygulama bazl\u0131 hata ekran\u0131 sunars\u0131n\u0131z.<\/li>\n<li>\u00d6nemli uyar\u0131lar\u0131 ve hatalar\u0131 loglar, ancak gereksiz notice\/deprecated g\u00fcr\u00fclt\u00fcs\u00fcn\u00fc filtrelersiniz.<\/li>\n<li>Log dosyalar\u0131 d\u00fczenli olarak d\u00f6nd\u00fcr\u00fcl\u00fcr ve izlenirse, sorunlar\u0131 kullan\u0131c\u0131lar fark etmeden \u00f6nce yakalama \u015fans\u0131n\u0131z olur.<\/li>\n<\/ul>\n<p>Canl\u0131 ortam optimizasyonu yaparken, PHP\u2019nin di\u011fer kritik ayarlar\u0131n\u0131 da g\u00f6zden ge\u00e7irmek faydal\u0131d\u0131r. \u00d6rne\u011fin <strong>memory_limit<\/strong>, <strong>max_execution_time<\/strong> ve <strong>upload_max_filesize<\/strong> gibi de\u011ferleri dengeli se\u00e7mek i\u00e7in \u015fu rehbere de g\u00f6z atabilirsiniz: <a href=\"https:\/\/www.dchost.com\/blog\/php-ayarlarini-dogru-yapmak-memory_limit-max_execution_time-ve-upload_max_filesize-kac-olmali\/\">PHP ayarlar\u0131n\u0131 do\u011fru yapmak i\u00e7in haz\u0131rlad\u0131\u011f\u0131m\u0131z detayl\u0131 rehber<\/a>.<\/p>\n<h2><span id=\"PHP_Hata_Loglarini_Nereye_ve_Nasil_Yazdirmali\">PHP Hata Loglar\u0131n\u0131 Nereye ve Nas\u0131l Yazd\u0131rmal\u0131?<\/span><\/h2>\n<p>Hatalar\u0131 loglamaya karar verdiniz, ancak nereye yazd\u0131raca\u011f\u0131n\u0131z en az ayarlar kadar \u00f6nemli. Yanl\u0131\u015f se\u00e7ilmi\u015f bir log yolu, diski dolduran devasa dosyalar veya yetki hatalar\u0131yla sonu\u00e7lanabilir.<\/p>\n<h3><span id=\"Merkezi_log_dosyasi_mi_site_bazli_log_mu\">Merkezi log dosyas\u0131 m\u0131, site bazl\u0131 log mu?<\/span><\/h3>\n<p>\u0130ki yayg\u0131n yakla\u015f\u0131m var:<\/p>\n<ul>\n<li><strong>Merkezi log dosyas\u0131<\/strong>: T\u00fcm PHP uygulamalar\u0131 \/ vhost\u2019lar ayn\u0131 dosyaya yazar (\u00f6rn. <code>\/var\/log\/php-errors.log<\/code>).<\/li>\n<li><strong>Site bazl\u0131 log<\/strong>: Her domain \/ proje i\u00e7in ayr\u0131 bir PHP log dosyas\u0131 kullan\u0131l\u0131r (\u00f6rn. <code>\/home\/user\/logs\/domain-php-errors.log<\/code>).<\/li>\n<\/ul>\n<p>Payla\u015f\u0131ml\u0131 hosting senaryosunda, genellikle her hesab\u0131n kendi log dizini olur ve bu dizin panel taraf\u0131ndan otomatik y\u00f6netilir. VPS veya dedicated sunucuda ise tercihinizi kendiniz belirlemelisiniz. Birka\u00e7 site bar\u0131nd\u0131r\u0131yorsan\u0131z site bazl\u0131 log mant\u0131kl\u0131d\u0131r; onlarca proje bar\u0131nd\u0131ran bir ajanssan\u0131z, merkezi log + filtrasyon (\u00f6rne\u011fin request ID veya hostname bazl\u0131) daha y\u00f6netilebilir olabilir.<\/p>\n<h3><span id=\"phpini_htaccess_ve_ini_set_arasindaki_fark\">php.ini, .htaccess ve ini_set aras\u0131ndaki fark<\/span><\/h3>\n<p>PHP hata loglama ayarlar\u0131n\u0131 \u00fc\u00e7 farkl\u0131 seviyede de\u011fi\u015ftirebilirsiniz:<\/p>\n<ol>\n<li><strong>Global php.ini<\/strong>: T\u00fcm siteleri etkiler. VPS\/dedicated ortamda k\u00f6k d\u00fczeyinde yap\u0131l\u0131r.<\/li>\n<li><strong>.htaccess veya kullan\u0131c\u0131 bazl\u0131 ini<\/strong>: Belirli bir site veya dizin i\u00e7in ge\u00e7erli olur.<\/li>\n<li><strong>ini_set()<\/strong>: Uygulama kodu i\u00e7inden \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131 anda ge\u00e7erli olur (sadece o request i\u00e7in).<\/li>\n<\/ol>\n<p>\u00d6rne\u011fin sadece bir Laravel projesinde daha detayl\u0131 loglama yapmak istiyorsan\u0131z, <code>public\/index.php<\/code> i\u00e7inde:<\/p>\n<pre class=\"language-php line-numbers\"><code class=\"language-php\">&lt;?php\nini_set('display_errors', '0');\nini_set('log_errors', '1');\nini_set('error_log', __DIR__ . '\/..\/storage\/logs\/php-error.log');\nini_set('error_reporting', E_ALL &amp; ~E_NOTICE &amp; ~E_STRICT &amp; ~E_DEPRECATED);\n<\/code><\/pre>\n<p>gibi bir yap\u0131 kullanabilirsiniz. Ancak m\u00fcmk\u00fcn oldu\u011funca konfig\u00fcrasyonlar\u0131 koddan ayr\u0131 tutmak (php.ini, panel veya .htaccess \u00fczerinden) uzun vadede daha y\u00f6netilebilir olur.<\/p>\n<h3><span id=\"Log_dosyasi_izinleri_ve_guvenlik\">Log dosyas\u0131 izinleri ve g\u00fcvenlik<\/span><\/h3>\n<p>Log dosyalar\u0131n\u0131n yetkileri, g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik bir nokta. Genel \u00f6neriler:<\/p>\n<ul>\n<li>Log dosyas\u0131 <strong>web \u00fczerinden eri\u015filebilir bir dizinde<\/strong> olmamal\u0131 (\u00f6rne\u011fin <code>public_html<\/code> alt\u0131nda <code>error.log<\/code> tutmak risklidir).<\/li>\n<li>\u0130zinler gere\u011finden fazla geni\u015f olmamal\u0131 (\u00f6rne\u011fin 777 yerine 640\/600).<\/li>\n<li>Ayn\u0131 sunucuda ba\u015fka kullan\u0131c\u0131lar varsa (payla\u015f\u0131ml\u0131 ortam), log dosyalar\u0131na sadece ilgili kullan\u0131c\u0131 ve root eri\u015febilmeli.<\/li>\n<\/ul>\n<p>Sunucu loglar\u0131n\u0131n genel g\u00fcvenli\u011fi ve analizi i\u00e7in \u015fu yaz\u0131m\u0131za da g\u00f6z atabilirsiniz: <a href=\"https:\/\/www.dchost.com\/blog\/hosting-sunucu-loglarini-okumayi-ogrenin-apache-ve-nginx-ile-4xx-5xx-hatalarini-teshis-rehberi\/\">Apache ve Nginx loglar\u0131n\u0131 okuyarak 4xx\/5xx hatalar\u0131n\u0131 te\u015fhis etme rehberi<\/a>. PHP hatalar\u0131 ile web sunucu hatalar\u0131n\u0131 bir arada okumak, sorun \u00e7\u00f6zme s\u00fcrecini ciddi \u015fekilde h\u0131zland\u0131r\u0131r.<\/p>\n<h3><span id=\"Log_dosyalarinin_sismesini_onlemek_logrotate_ve_disk_kullanimi\">Log dosyalar\u0131n\u0131n \u015fi\u015fmesini \u00f6nlemek: logrotate ve disk kullan\u0131m\u0131<\/span><\/h3>\n<p>\u0130yi yap\u0131land\u0131r\u0131lm\u0131\u015f bir PHP log sistemi bile, logrotate veya benzeri bir d\u00f6nd\u00fcrme mekanizmas\u0131 yoksa k\u0131sa s\u00fcrede diski doldurabilir. \u00d6zellikle yo\u011fun trafikli sitelerde birka\u00e7 g\u00fcn i\u00e7inde onlarca GB\u2019l\u0131k <code>php-errors.log<\/code> dosyas\u0131 g\u00f6rmek m\u00fcmk\u00fcn.<\/p>\n<p>Linux ortam\u0131nda tipik bir <code>logrotate<\/code> yap\u0131land\u0131rmas\u0131 \u015f\u00f6yle olabilir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">\/var\/log\/php-prod-errors.log {\n    daily\n    rotate 14\n    compress\n    missingok\n    notifempty\n    create 640 www-data www-data\n    postrotate\n        systemctl reload php-fpm.service &gt; \/dev\/null 2&gt;&amp;1 || true\n    endscript\n}\n<\/code><\/pre>\n<p>Bu sayede:<\/p>\n<ul>\n<li>Her g\u00fcn yeni dosya a\u00e7\u0131l\u0131r, eskiler s\u0131k\u0131\u015ft\u0131r\u0131l\u0131r.<\/li>\n<li>Belirli bir s\u00fcre (\u00f6rne\u011fin 14 g\u00fcn) sonras\u0131na ait loglar otomatik silinir.<\/li>\n<li>PHP-FPM log dosyas\u0131n\u0131 yeniden a\u00e7acak \u015fekilde reload edilir.<\/li>\n<\/ul>\n<p>Disk dolulu\u011fu sorunlar\u0131n\u0131 \u00f6nlemek i\u00e7in detayl\u0131 bir rehbere ihtiyac\u0131n\u0131z varsa, <a href=\"https:\/\/www.dchost.com\/blog\/vps-disk-kullanimi-ve-logrotate-ayarlariyla-no-space-left-on-device-hatasini-onlemek\/\">VPS disk kullan\u0131m\u0131 ve logrotate ile &#8220;No Space Left on Device&#8221; hatas\u0131n\u0131 \u00f6nleme rehberimizi<\/a> mutlaka inceleyin.<\/p>\n<h2><span id=\"Dogru_log_level_error_reporting_Secimi\">Do\u011fru log_level (error_reporting) Se\u00e7imi<\/span><\/h2>\n<p>PHP\u2019de hata seviyelerini do\u011fru se\u00e7mek, hem log dosyan\u0131zdaki g\u00fcr\u00fclt\u00fcy\u00fc azalt\u0131r hem de \u00f6nemli sinyalleri ka\u00e7\u0131rman\u0131z\u0131 engeller. <strong>error_reporting<\/strong> ayar\u0131n\u0131, kod taban\u0131n\u0131z\u0131n olgunlu\u011fu ve framework\u2019\u00fcn\u00fcz\u00fcn davran\u0131\u015f\u0131na g\u00f6re optimize etmelisiniz.<\/p>\n<h3><span id=\"E_ALL_her_zaman_iyi_mi\">E_ALL her zaman iyi mi?<\/span><\/h3>\n<p>Geli\u015ftirme ortam\u0131nda <strong>E_ALL<\/strong> neredeyse her zaman mant\u0131kl\u0131d\u0131r. T\u00fcm uyar\u0131lar\u0131 g\u00f6rmek, gelecekte sorun \u00e7\u0131karabilecek kod par\u00e7alar\u0131n\u0131 erkenden d\u00fczeltmenizi sa\u011flar. Ancak canl\u0131 ortamda <strong>E_ALL<\/strong> kullanmak, \u00f6zellikle eski eklenti ve temalarla \u00e7al\u0131\u015fan WordPress veya karma\u015f\u0131k kurumsal uygulamalarda:<\/p>\n<ul>\n<li>Log dosyalar\u0131n\u0131n \u00e7ok h\u0131zl\u0131 \u015fi\u015fmesine,<\/li>\n<li>Binlerce <code>E_NOTICE<\/code> ve <code>E_DEPRECATED<\/code> mesaj\u0131 aras\u0131nda as\u0131l kritik hatalar\u0131 ka\u00e7\u0131rman\u0131za<\/li>\n<\/ul>\n<p>sebep olabilir.<\/p>\n<h3><span id=\"Canli_ortam_icin_pratik_bir_seviye\">Canl\u0131 ortam i\u00e7in pratik bir seviye<\/span><\/h3>\n<p>\u00c7o\u011fu proje i\u00e7in uygulanabilir bir ba\u015flang\u0131\u00e7 seviyesi \u015fudur:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">error_reporting = E_ALL &amp; ~E_NOTICE &amp; ~E_STRICT &amp; ~E_DEPRECATED\n<\/code><\/pre>\n<p>B\u00f6ylece:<\/p>\n<ul>\n<li>Ger\u00e7ek hatalar\u0131 (E_ERROR, E_WARNING vb.) ve \u00f6nemli uyar\u0131lar\u0131 g\u00f6r\u00fcrs\u00fcn\u00fcz.<\/li>\n<li>H\u00e2l\u00e2 belli \u00f6l\u00e7\u00fcde g\u00fcr\u00fclt\u00fc olabilir; loglar\u0131 izleyip, projenize \u00f6zel filtrelemeler yapabilirsiniz.<\/li>\n<\/ul>\n<p>Framework seviyesinde kendi log sistemi (\u00f6rne\u011fin Laravel, Symfony, WordPress debug.log) olan projelerde, PHP error_reporting ayar\u0131n\u0131 daha konservatif tutup, detayl\u0131 debug\u2019u framework loglar\u0131na b\u0131rakmak da iyi bir yakla\u015f\u0131md\u0131r.<\/p>\n<h3><span id=\"Deprecation_E_DEPRECATED_uyarilarini_ne_yapmali\">Deprecation (E_DEPRECATED) uyar\u0131lar\u0131n\u0131 ne yapmal\u0131?<\/span><\/h3>\n<p>PHP 7.x\u2019ten 8.x\u2019e ge\u00e7i\u015fte bir\u00e7ok fonksiyon ve davran\u0131\u015f \u201cdeprecated\u201d oldu. Geli\u015ftirme\/staging ortam\u0131nda <strong>E_DEPRECATED<\/strong> uyar\u0131lar\u0131n\u0131 mutlaka g\u00f6rmenizi \u00f6neririz; \u00e7\u00fcnk\u00fc bir sonraki major versiyonda bu fonksiyonlar tamamen kald\u0131r\u0131labilir.<\/p>\n<p>Bu nedenle:<\/p>\n<ul>\n<li>Geli\u015ftirme\/staging: <code>error_reporting = E_ALL<\/code> veya en az\u0131ndan <code>E_DEPRECATED<\/code> i\u00e7erecek bir kombinasyon.<\/li>\n<li>Canl\u0131: G\u00fcr\u00fclt\u00fc \u00e7ok fazlaysa <code>~E_DEPRECATED<\/code> ile filtreleyin, ama d\u00fczenli olarak staging ortam\u0131ndaki deprecated uyar\u0131lar\u0131n\u0131 g\u00f6zden ge\u00e7irin.<\/li>\n<\/ul>\n<h2><span id=\"Guvenlik_Performans_ve_Yasal_Boyut\">G\u00fcvenlik, Performans ve Yasal Boyut<\/span><\/h2>\n<p>PHP hata loglar\u0131n\u0131 yap\u0131land\u0131r\u0131rken yaln\u0131zca \u201chata g\u00f6r\u00fcns\u00fcn yeter\u201d demek uzun vadede sorun getirir. G\u00fcvenlik, performans ve hukuki gereksinimleri birlikte d\u00fc\u015f\u00fcnmek gerekiyor.<\/p>\n<h3><span id=\"Guvenlik_Hata_mesajlarinda_veri_sizintisi\">G\u00fcvenlik: Hata mesajlar\u0131nda veri s\u0131z\u0131nt\u0131s\u0131<\/span><\/h3>\n<p>En temel kural\u0131 tekrar vurgulayal\u0131m: <strong>Canl\u0131 ortamda display_errors daima Off olmal\u0131<\/strong>. Aksi halde:<\/p>\n<ul>\n<li>Veritaban\u0131 ba\u011flant\u0131 string\u2019leri (hostname, kullan\u0131c\u0131 ad\u0131, \u015fifre),<\/li>\n<li>Dosya yollar\u0131 (uygulaman\u0131n dizin yap\u0131s\u0131, kullan\u0131c\u0131 isimleri),<\/li>\n<li>\u00dc\u00e7\u00fcnc\u00fc parti API anahtarlar\u0131 veya token par\u00e7alar\u0131<\/li>\n<\/ul>\n<p>ziyaret\u00e7ilere (veya botlara) if\u015fa olabilir. Bu, sadece teorik bir risk de\u011fil; hacklenmi\u015f PHP sitelerinde g\u00f6rd\u00fc\u011f\u00fcm\u00fcz backdoor\u2019lar\u0131n \u00f6nemli k\u0131sm\u0131, sald\u0131rganlar\u0131n hata mesajlar\u0131ndan \u00f6\u011frendikleri dizin ve konfig\u00fcrasyon bilgilerine dayan\u0131yor. Bu konuda daha geni\u015f bir perspektif edinmek i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/hacked-php-sitelerini-temizleme-rehberi-backdoor-tespiti-tarama-ve-guvenli-tasima\/\">hacklenmi\u015f PHP sitelerini temizleme rehberimizde<\/a> payla\u015ft\u0131\u011f\u0131m\u0131z ger\u00e7ek senaryolara g\u00f6z atabilirsiniz.<\/p>\n<h3><span id=\"Performans_Cok_fazla_log_yazmanin_bedeli\">Performans: \u00c7ok fazla log yazman\u0131n bedeli<\/span><\/h3>\n<p>Loglama \u00fccretsiz de\u011fil; her log sat\u0131r\u0131 disk I\/O demek. \u00d6zellikle:<\/p>\n<ul>\n<li>Yo\u011fun trafik alt\u0131nda her istekte onlarca <code>NOTICE<\/code> ve <code>DEPRECATED<\/code> \u00fcreten uygulamalar,<\/li>\n<li>SSD yerine yava\u015f disk kullan\u0131lan ortamlarda,<\/li>\n<li>Log s\u0131k\u0131\u015ft\u0131rma ve d\u00f6nd\u00fcrme do\u011fru yap\u0131land\u0131r\u0131lmad\u0131\u011f\u0131nda<\/li>\n<\/ul>\n<p>log yazma i\u015flemleri fark edilir performans kayb\u0131na yol a\u00e7abilir. Bu, \u00f6zellikle CPU ve disk I\/O\u2019su s\u0131n\u0131rl\u0131 <a href=\"https:\/\/www.dchost.com\/tr\/web-hosting\">payla\u015f\u0131ml\u0131 hosting<\/a> ortamlar\u0131nda daha h\u0131zl\u0131 hissedilir. DCHost altyap\u0131s\u0131nda NVMe diskler ve do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f logrotate ile bu etkiyi minimize ediyoruz; ancak uygulama seviyesinde gereksiz log g\u00fcr\u00fclt\u00fcs\u00fcn\u00fc azaltmak h\u00e2l\u00e2 sizin elinizde.<\/p>\n<h3><span id=\"KVKKGDPR_ve_log_anonimlestirme\">KVKK\/GDPR ve log anonimle\u015ftirme<\/span><\/h3>\n<p>Hata loglar\u0131 \u00e7o\u011fu zaman IP adresi, kullan\u0131c\u0131 ajan\u0131, URL parametreleri ve bazen de kullan\u0131c\u0131ya ait ki\u015fisel verileri i\u00e7erebilir. KVKK ve GDPR kapsam\u0131nda bu verilerin:<\/p>\n<ul>\n<li>Gere\u011finden uzun s\u00fcre saklanmamas\u0131,<\/li>\n<li>M\u00fcmk\u00fcn oldu\u011funca anonimle\u015ftirilmesi (IP maskeleme vb.),<\/li>\n<li>Yetkisiz ki\u015filerce eri\u015filemeyecek \u015fekilde korunmas\u0131<\/li>\n<\/ul>\n<p>gerekiyor. \u00d6zellikle e-ticaret ve \u00fcyelikli sistemlerde, hata loglar\u0131nda istemeden ki\u015fisel veri birikmesi yayg\u0131n bir durum. Bu konuda detayl\u0131 teknik \u00f6rnekler i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/kvkk-ve-gdpr-icin-log-anonimlestirme-ip-maskeleme-ve-pseudonymization\/\">KVKK ve GDPR i\u00e7in log anonimle\u015ftirme rehberimizi<\/a> inceleyebilirsiniz.<\/p>\n<h2><span id=\"DCHost_Ortaminda_Pratik_Oneriler\">DCHost Ortam\u0131nda Pratik \u00d6neriler<\/span><\/h2>\n<p>DCHost olarak hem payla\u015f\u0131ml\u0131 hosting, hem VPS, hem de dedicated sunucu ve colocation ortamlar\u0131nda PHP tabanl\u0131 y\u00fczlerce projeyi bar\u0131nd\u0131r\u0131yoruz. Sahada i\u015fleyen, pratik birka\u00e7 \u00f6neriyi do\u011frudan payla\u015fal\u0131m.<\/p>\n<h3><span id=\"Paylasimli_hosting_kullanicilari_icin\">Payla\u015f\u0131ml\u0131 hosting kullan\u0131c\u0131lar\u0131 i\u00e7in<\/span><\/h3>\n<ul>\n<li>cPanel veya benzeri panelinizde PHP Selector \/ MultiPHP gibi ara\u00e7lar varsa, <strong>display_errors<\/strong> ve <strong>error_reporting<\/strong> ayarlar\u0131n\u0131 buradan y\u00f6netmeyi tercih edin.<\/li>\n<li>Log dosyalar\u0131n\u0131z genelde <code>logs<\/code> klas\u00f6r\u00fc alt\u0131nda tutulur; d\u00fczenli aral\u0131klarla boyutlar\u0131n\u0131 kontrol edin.<\/li>\n<li>WordPress kullan\u0131yorsan\u0131z, <code>wp-config.php<\/code> i\u00e7inde <code>WP_DEBUG_LOG<\/code> ve <code>WP_DEBUG_DISPLAY<\/code> ayarlar\u0131n\u0131 canl\u0131 ortamda dikkatle y\u00f6netin; hatalar\u0131 kullan\u0131c\u0131ya de\u011fil sadece log dosyas\u0131na yazd\u0131r\u0131n.<\/li>\n<\/ul>\n<p>Payla\u015f\u0131ml\u0131 ortamda beyaz ekran, beklenmedik 500 hatalar\u0131 gibi sorunlarla kar\u015f\u0131la\u015f\u0131yorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-beyaz-ekran-hatasi-cozumu-hosting-ve-php-tarafli-adim-adim-rehber\/\">WordPress beyaz ekran hatas\u0131 \u00e7\u00f6z\u00fcm\u00fc rehberimizde<\/a> payla\u015ft\u0131\u011f\u0131m\u0131z PHP ve log ayarlar\u0131 da i\u015finize yarayacakt\u0131r.<\/p>\n<h3><span id=\"VPS_ve_dedicated_sunucu_kullanicilari_icin\">VPS ve dedicated sunucu kullan\u0131c\u0131lar\u0131 i\u00e7in<\/span><\/h3>\n<p>Kendi VPS veya fiziksel sunucusunu kullanan ekipler i\u00e7in birka\u00e7 ekstra tavsiye:<\/p>\n<ul>\n<li>PHP-FPM havuzlar\u0131n\u0131 site bazl\u0131 ayarlay\u0131n ve her havuz i\u00e7in <code>php_admin_value[error_log]<\/code> ile ayr\u0131 log dosyalar\u0131 tan\u0131mlay\u0131n.<\/li>\n<li>Log dosyalar\u0131n\u0131z\u0131 merkezi bir sistemde toplamak (\u00f6rne\u011fin Loki, ELK vb.) istiyorsan\u0131z, PHP loglar\u0131n\u0131 da ayn\u0131 pipeline\u2019a dahil edin.<\/li>\n<li>VPS \u00fczerinde kapsaml\u0131 bir log mimarisi kurmak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/vps-log-yonetimi-nasil-rayina-oturur-grafana-loki-promtail-ile-merkezi-loglama-tutma-sureleri-ve-alarm-kurallari\/\">VPS log y\u00f6netimi ve merkezi loglama rehberimizde<\/a> Loki + Promtail gibi \u00e7\u00f6z\u00fcmlerle nas\u0131l entegre edebilece\u011finizi detayl\u0131 anlatt\u0131k.<\/li>\n<\/ul>\n<h3><span id=\"DCHost_ekibinin_sik_kullandigi_kontrol_listesi\">DCHost ekibinin s\u0131k kulland\u0131\u011f\u0131 kontrol listesi<\/span><\/h3>\n<p>Yeni bir PHP projesi DCHost altyap\u0131s\u0131na ta\u015f\u0131nd\u0131\u011f\u0131nda genellikle \u015fu mini kontrol listesini uyguluyoruz:<\/p>\n<ol>\n<li>Canl\u0131 ortamda <code>display_errors = Off<\/code> mu?<\/li>\n<li><code>log_errors = On<\/code> ve <code>error_log<\/code> yolu web k\u00f6k\u00fcn\u00fcn (public_html) d\u0131\u015f\u0131nda m\u0131?<\/li>\n<li><code>error_reporting<\/code> seviyesi, loglar\u0131 gereksiz doldurmayacak \u015fekilde optimize edilmi\u015f mi?<\/li>\n<li>Logrotate veya benzeri bir mekanizma ile loglar d\u00f6nd\u00fcr\u00fcl\u00fcyor mu?<\/li>\n<li>Log dosyalar\u0131 KVKK\/GDPR a\u00e7\u0131s\u0131ndan makul bir s\u00fcre sonra otomatik siliniyor veya ar\u015fivleniyor mu?<\/li>\n<\/ol>\n<p>Bu 5 ad\u0131m\u0131 ge\u00e7irip d\u00fczeltmek, \u00e7o\u011fu projede hem stabiliteyi hem de izlenebilirli\u011fi g\u00f6zle g\u00f6r\u00fcl\u00fcr \u015fekilde art\u0131r\u0131yor.<\/p>\n<h2><span id=\"Ozet_ve_Sonraki_Adimlar\">\u00d6zet ve Sonraki Ad\u0131mlar<\/span><\/h2>\n<p>PHP hata kay\u0131tlar\u0131n\u0131 do\u011fru yap\u0131land\u0131rmak, \u201cbir kere ayarlay\u0131p unuturuz\u201d t\u00fcr\u00fcnden bir i\u015f de\u011fil; geli\u015ftirme, test ve canl\u0131 ortamlar aras\u0131nda bilin\u00e7li farklar koyman\u0131z gereken, g\u00fcvenlik, performans ve yasal gereksinimlerle i\u00e7 i\u00e7e bir s\u00fcre\u00e7. Bu yaz\u0131da <strong>display_errors<\/strong>, <strong>log_errors<\/strong>, <strong>error_log<\/strong> ve <strong>error_reporting (log_level)<\/strong> ayarlar\u0131n\u0131n pratikte nas\u0131l bir araya gelmesi gerekti\u011fini; geli\u015ftirme ortam\u0131nda daha konu\u015fkan, canl\u0131 ortamda ise daha kontroll\u00fc bir log stratejisinin neden kritik oldu\u011funu detayland\u0131rd\u0131k.<\/p>\n<p>Bir sonraki ad\u0131m olarak, kendi projenizde hangi ortamda hangi ayarlar\u0131n ge\u00e7erli oldu\u011funu ger\u00e7ekten do\u011frulaman\u0131z\u0131 \u00f6neririm. K\u00fc\u00e7\u00fck bir PHP test dosyas\u0131yla <code>phpinfo()<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 kontrol edin, log dosyalar\u0131n\u0131z\u0131n ger\u00e7ekten yaz\u0131ld\u0131\u011f\u0131n\u0131 ve d\u00f6nd\u00fcr\u00fcld\u00fc\u011f\u00fcn\u00fc teyit edin. Ard\u0131ndan, web sunucusu loglar\u0131n\u0131zla birlikte okuyarak; yava\u015f istekler, 4xx\/5xx hatalar\u0131 ve PHP fatal error\u2019lar aras\u0131ndaki ba\u011flant\u0131y\u0131 inceleyin. Bu noktada hem <a href=\"https:\/\/www.dchost.com\/blog\/hosting-sunucu-loglarini-okumayi-ogrenin-apache-ve-nginx-ile-4xx-5xx-hatalarini-teshis-rehberi\/\">sunucu loglar\u0131n\u0131 okuma rehberi<\/a> hem de <a href=\"https:\/\/www.dchost.com\/blog\/gelistirme-test-ve-canli-ortamlar-icin-hosting-mimarisi\/\">geli\u015ftirme, test ve canl\u0131 ortam mimarisi yaz\u0131m\u0131z<\/a> size iyi bir yol arkada\u015f\u0131 olacakt\u0131r.<\/p>\n<p>E\u011fer DCHost \u00fczerinde payla\u015f\u0131ml\u0131 hosting, VPS, dedicated sunucu veya colocation hizmetlerinden birini kullan\u0131yorsan\u0131z ve PHP hata loglar\u0131n\u0131z\u0131 nas\u0131l optimize edece\u011finiz konusunda emin de\u011filseniz, teknik ekibimizle ticket a\u00e7arak mevcut konfig\u00fcrasyonunuzu birlikte g\u00f6zden ge\u00e7irebiliriz. Do\u011fru konfig\u00fcre edilmi\u015f bir log altyap\u0131s\u0131, hem beklenmedik kesintileri azalt\u0131r hem de sorun \u00e7\u0131kt\u0131\u011f\u0131nda panik yerine sakin ve veriye dayal\u0131 hareket etmenizi sa\u011flar.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 PHP Hata Kay\u0131tlar\u0131n\u0131 Neden Ciddiye Almal\u0131s\u0131n\u0131z?2 Temel Kavramlar: display_errors, log_errors, error_log ve error_reporting2.1 display_errors: Hatalar\u0131 ekrana basmak2.2 log_errors: Hatalar\u0131 dosyaya yazmak2.3 error_log: Log dosyas\u0131n\u0131n yolu2.4 error_reporting (log_level): Hangi seviyeye kadar loglanaca\u011f\u0131n\u0131 belirlemek3 Geli\u015ftirme, Test ve Canl\u0131 Ortam \u0130\u00e7in Farkl\u0131 Stratejiler3.1 Geli\u015ftirme ortam\u0131 i\u00e7in ideal ayarlar3.2 Staging\/Test ortam\u0131 i\u00e7in denge3.3 Canl\u0131 (production) ortam i\u00e7in g\u00fcvenli [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3918,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3917","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3917"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3917\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3918"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}