Hata teşhisi kuralları
Hata teşhisi ekranı iki iş yapar:
- Ortam kontrolleri: Windows ortamını ve Coduva'nın durumunu denetler.
- Günlük bulguları: Servis ve proje günlüklerini bilinen hata kalıplarına göre tarar; eşleşen satırı sade bir açıklama ve çözüm önerisiyle gösterir.
Her sonuç dört düzeyden birini alır: Sorun yok, Bilgi, Uyarı, Hata.
Adım adım kullanım için bkz. Sorun giderme.
Ekran
Kontroller ekran açıldığında kendiliğinden çalışır. Üstteki Kontrolleri çalıştır düğmesi yeniden çalıştırır, Sağlık raporu oluştur sonuçları dosyaya yazar. Sağlık raporu komut paletinden (Ctrl+K → Sağlık raporu oluştur) de oluşturulabilir.
- Özet: Kontrollerde Uyarı veya Hata yoksa Ortam sağlıklı ("<n> kontrolün tamamı sorunsuz geçti."), varsa Dikkat gerektiren <n> konu var ("<ok>/<toplam> kontrol sorunsuz. Önerilen düzeltmeler aşağıda.") yazar. Yanında Son çalıştırma saati, altında düzeylere göre renkli bir dağılım çubuğu ve dört sayaç bulunur. Özet yalnızca ortam kontrollerini sayar; günlük bulguları ayrı listelenir.
- Kontroller: Sorunlu kontroller listenin başında gösterilir. Her satırda kontrolün adı, düzeyi, sorun varsa açıklaması ve ayrıntısı (ör.
80 · httpd.exe (PID 4120)veya eksik adresler) yazar. - Günlük bulguları: Her bulgunun başlığı, kaç kez görüldüğü, açıklaması, önerilen çözüm, eşleşen son satır ve günlük dosyasının yolu.
Düzeltme düğmeleri
Sorunlu bir kontrolün yanında, varsa bir düzeltme düğmesi bulunur:
| Düğme | Ne yapar |
|---|---|
| Bileşenleri kur | Kontrol merkezini açar; eksik bileşenler oradaki Bileşenleri kur düğmesiyle kurulur |
| Portları değiştir | Ayarlar ekranını açar; portlar Ağ bölümünde değiştirilir |
| hosts dosyasını eşitle | hosts dosyasını hemen eşitler (UAC onayı ister) ve kontrolleri yeniden çalıştırır |
| Güvenilir yap | Yerel sertifika otoritesini Windows'un kullanıcı kök deposuna ekler (Windows onay penceresi gösterir) ve kontrolleri yeniden çalıştırır |
| Visual C++ indir | Microsoft'un Visual C++ 2015–2022 (x64) kurulum dosyasını (https://aka.ms/vs/17/release/vc_redist.x64.exe) tarayıcıda açar |
Ortam kontrolleri
| Kontrol | Ne denetlenir | Sorun olduğunda | Eylem |
|---|---|---|---|
| Visual C++ çalışma zamanı | %SystemRoot%\System32 içinde vcruntime140.dll ve vcruntime140_1.dll | Hata: PHP'nin çalışması için Microsoft Visual C++ 2015–2022 (x64) gerekir | Visual C++ indir |
| Bileşen dizini yolu | C:\Coduva (veya CODUVA_HOME) yalnızca ASCII karakter mi | Uyarı: bazı araçlar sorun çıkarabilir | — |
| Bileşenler | Nginx, PHP ve MariaDB kurulu mu | Uyarı: eksik bileşenler listelenir | Bileşenleri kur |
| PHP komut satırı | Varsayılan PHP'nin php.exe -v komutu 20 saniye içinde çalışıyor mu | Hata: çoğunlukla eksik bir DLL veya bozuk kurulum | — |
| Web sunucusu portu | Nginx HTTP portu boş mu, engelli mi | Hata: portu tutan program ve PID'i yazılır | Portları değiştir |
| Veritabanı portu | MariaDB portu boş mu, engelli mi | Hata: portu tutan program ve PID'i yazılır | Portları değiştir |
| HTTPS portu | HTTPS portunu başka bir program tutuyor mu | HTTPS kullanan proje varsa Hata, yoksa Bilgi | Portları değiştir |
| hosts dosyası | Her projenin adresi hosts dosyasında var mı | Uyarı: eksik adresler listelenir. Dosya okunamazsa Hata | hosts dosyasını eşitle |
| Yerel sertifika otoritesi | Yalnızca HTTPS kullanan proje varsa: CA Windows tarafından güvenilir mi | Uyarı: tarayıcı HTTPS uyarısı gösterir | Güvenilir yap |
| Diğer yerel sunucular | WampServer, XAMPP veya Laragon çalışıyor mu | Uyarı: port çakışmasına yol açabilir | — |
| Disk alanı | Bileşen dizininin bulunduğu diskte boş alan | 2 GB'tan azsa Uyarı | — |
| Windows Defender | Gerçek zamanlı koruma açık mı | Bilgi: PHP projelerinde yavaşlığa yol açabilir; bileşen dizinini ve proje klasörlerini dışlama listesine eklemeyi düşünün | — |
Diğer yerel sunucular ve Windows Defender satırları yalnızca bir durum algılandığında listelenir.
Günlük taraması
Taranan günlükler ve kaynak adları:
| Kaynak | Günlük dosyaları |
|---|---|
nginx | C:\Coduva\logs\nginx-error.log ve her projenin C:\Coduva\logs\sites\<ad>-error.log dosyası |
php | C:\Coduva\logs\php-<sürüm>-error.log dosyaları ve proje uygulama günlükleri |
mariadb | C:\Coduva\logs\mariadb-error.log |
framework | WordPress: wp-content\debug.log; Laravel: storage\logs\laravel.log |
Tarama kuralları:
- Her günlüğün son 300 satırı okunur.
- Eşleştirme büyük/küçük harf duyarsız metin aramasıdır.
- Aynı kural aynı dosyada birden çok kez eşleşirse tek bulgu olarak gösterilir; kaç kez görüldüğü ve eşleşen son satır (en fazla 400 karakter) yazılır.
- Bulgular ağırlığa göre sıralanır: önce Hata, sonra Uyarı.
Kural biçimi
Kurallar program kodundan ayrı, resources/doctor-rules.json adlı bir veri dosyasında yazılır ve derleme sırasında programa gömülür. Yeni kurallar bu dosyaya kod değiştirmeden eklenir ve yeni Coduva sürümleriyle gelir; kurulu programdaki kurallar elle değiştirilemez.
{
"schema": 1,
"rules": [
{
"id": "php_memory",
"source": "php",
"all": ["Allowed memory size of"],
"severity": "warn",
"title": "PHP bellek sınırı aşıldı",
"explanation": "Bir betik memory_limit değerinden fazla bellek kullanmak istedi.",
"fix": "PHP ve Node ekranından bellek sınırını artırın (ör. 1G) veya betikteki bellek kullanımını azaltın."
}
]
}| Alan | Anlamı |
|---|---|
schema | Dosya biçiminin sürümü; şu an 1 |
id | Kuralın benzersiz kimliği |
source | Hangi günlüklere uygulanacağı: nginx, php, mariadb, framework |
all | Satırda hepsinin geçmesi gereken metinler |
any | Satırda en az birinin geçmesi gereken metinler |
severity | info, warn veya error |
title, explanation, fix | Arayüzde gösterilen başlık, açıklama ve öneri |
Bir kuralda all ve any birlikte kullanılabilir; ikisi de doluysa iki koşul da sağlanmalıdır. En az biri dolu olmalıdır.
Kurallar
Coduva 0.2.0 ile gelen 15 kural. Çözüm metinleri uygulamada gösterildiği gibidir; metinlerde geçen Ayarlar → Portlar, Ayarlar ekranındaki Ağ bölümüdür.
Nginx
Nginx portu açamadı
- Kimlik:
nginx_bind_failed· Düzey: Hata - Eşleşme: satırda
bind() tovefailedgeçer - Açıklama: Web sunucusunun kullanmak istediği port başka bir program tarafından tutuluyor veya Windows bu portu ayırmış.
- Çözüm: Kontrol merkezinde portu kimin kullandığına bakın; programı kapatın veya Ayarlar → Portlar bölümünden başka bir port seçin. Bkz. Portlar.
Nginx yapılandırma hatası
- Kimlik:
nginx_emerg· Düzey: Hata - Eşleşme:
[emerg] - Açıklama: Nginx yapılandırma dosyası okunamadı veya geçersiz bir ayar içeriyor.
- Çözüm: Proje web kökünün var olduğunu kontrol edin, ardından servisi yeniden başlatın. Sorun sürerse hata satırını sağlık raporuyla paylaşın.
HTTPS sertifikası yüklenemedi
- Kimlik:
nginx_ssl_key· Düzey: Hata - Eşleşme:
SSL_CTX_use_PrivateKey - Açıklama: Projenin sertifika veya anahtar dosyası bozuk ya da eşleşmiyor.
- Çözüm: Projede HTTPS'i kapatıp yeniden açın; Coduva sertifikayı yeniden üretir.
PHP süreci yanıt vermedi
- Kimlik:
nginx_upstream_refused· Düzey: Uyarı - Eşleşme:
connect() failedvewhile connecting to upstream - Açıklama: Nginx isteği PHP FastCGI sürecine iletemedi. Süreç çökmüş veya henüz başlamamış olabilir.
- Çözüm: Coduva bekçisi süreci birkaç saniye içinde yeniden başlatır. Sürekli tekrarlanıyorsa PHP hata günlüğüne bakın.
PHP
PHP bellek sınırı aşıldı
- Kimlik:
php_memory· Düzey: Uyarı - Eşleşme:
Allowed memory size of - Açıklama: Bir betik
memory_limitdeğerinden fazla bellek kullanmak istedi. - Çözüm: PHP ve Node ekranından bellek sınırını artırın (ör.
1G) veya betikteki bellek kullanımını azaltın.
PHP çalışma süresi aşıldı
- Kimlik:
php_timeout· Düzey: Uyarı - Eşleşme:
Maximum execution time of - Açıklama: Bir istek
max_execution_timesüresinden uzun sürdü. - Çözüm: PHP ve Node ekranından çalışma süresini artırın veya uzun işi kuyruğa taşıyın.
PHP eklentisi yüklenemedi
- Kimlik:
php_ext_load· Düzey: Hata - Eşleşme:
PHP Startup: Unable to load dynamic library - Açıklama: Bir eklentinin DLL dosyası bulunamadı veya bağımlılıkları eksik. Çoğunlukla Visual C++ çalışma zamanı eksikliğinden kaynaklanır.
- Çözüm: Hata teşhisindeki Visual C++ kontrolüne bakın; sorunlu eklentiyi PHP ve Node ekranından kapatın.
Eksik PHP eklentisi olabilir
- Kimlik:
php_undefined_function· Düzey: Uyarı - Eşleşme:
Call to undefined function - Açıklama: Kod, yüklü olmayan bir eklentinin fonksiyonunu çağırdı (ör.
imagecreate→gd,mb_strlen→mbstring). - Çözüm: PHP ve Node ekranından ilgili eklentiyi açın ve web sunucusunu yeniden başlatın.
Sınıf bulunamadı
- Kimlik:
php_class_not_found· Düzey: Uyarı - Eşleşme:
Class "venot found - Açıklama: Composer bağımlılıkları kurulmamış veya otomatik yükleyici güncel değil.
- Çözüm: Projede
composer installveyacomposer dump-autoloadçalıştırın.
MariaDB
MariaDB portu açamadı
- Kimlik:
mariadb_bind· Düzey: Hata - Eşleşme:
Can't start server: Bind on TCP/IP port - Açıklama: Veritabanı portu başka bir MySQL veya MariaDB kurulumu tarafından kullanılıyor.
- Çözüm: Diğer veritabanını durdurun veya Ayarlar → Portlar bölümünden başka bir port seçin (ör.
3308).
Veritabanı dosyalarında sorun var
- Kimlik:
mariadb_innodb· Düzey: Hata - Eşleşme: şunlardan biri:
InnoDB: Plugin initialization aborted,InnoDB: Database page corruption,Aria recovery failed - Açıklama: MariaDB veri dosyaları beklenmedik bir kapanma veya disk sorunu nedeniyle zarar görmüş olabilir.
- Çözüm: Önce veri dizininin (
C:\Coduva\data\mariadb) kopyasını alın. Ardından yedekten geri dönün veya sağlık raporunu inceleyin.
Veritabanı girişi reddedildi
- Kimlik:
mariadb_access_denied· Düzey: Uyarı - Eşleşme:
Access denied for user - Açıklama: Kullanıcı adı veya parola hatalı.
rootparolası değiştirildiyse Coduva servisleri düzgün kapatamaz. - Çözüm: Projenin veritabanı ayarlarını kontrol edin. Coduva varsayılanı: kullanıcı
root, parola boş, yalnızca yerel erişim.
WordPress ve Laravel
Laravel uygulama anahtarı yok
- Kimlik:
laravel_key· Düzey: Hata - Eşleşme:
No application encryption key has been specified - Açıklama:
.envdosyasındaAPP_KEYtanımlı değil. - Çözüm: Laravel araçlarından
key:generatekomutunu çalıştırın.
Laravel veritabanına bağlanamadı
- Kimlik:
laravel_db· Düzey: Hata - Eşleşme: şunlardan biri:
SQLSTATE[HY000] [2002],SQLSTATE[HY000] [1049] - Açıklama: MariaDB çalışmıyor, port farklı veya veritabanı yok.
- Çözüm: MariaDB'yi başlatın;
.enviçindekiDB_PORTveDB_DATABASEdeğerlerini kontrol edin.
WordPress veritabanına bağlanamadı
- Kimlik:
wp_db· Düzey: Hata - Eşleşme: şunlardan biri:
Error establishing a database connection,Veritabanı bağlantısı kurulurken hata - Açıklama: MariaDB çalışmıyor veya
wp-config.phpiçindeki bilgiler yanlış. - Çözüm: MariaDB'yi başlatın;
wp-config.phpiçindekiDB_HOSTdeğerinin127.0.0.1:<port>olduğunu kontrol edin.
Sağlık raporu
Sağlık raporu oluştur son kontrol sonuçlarını Markdown dosyası olarak kaydeder:
%APPDATA%\Coduva\reports\saglik-raporu-<zaman>.mdRapor şunları içerir:
- Coduva sürümü, tarih ve bileşen dizini
- Kontroller tablosu: kontrol kimliği, düzey ve ayrıntı
- Günlük bulguları: her bulgunun başlığı, düzeyi, sayısı, açıklaması, önerisi, günlük dosyasının yolu ve eşleşen satır
- Kurulu bileşenler ve sürümleri
Eşleşen satırlardaki parola, jeton ve gizli anahtar değerleri rapora yazılmadan önce maskelenir. Rapor, destek isterken veya bir sorunu paylaşırken ekran görüntüsü yerine kullanılmak üzere tasarlanmıştır; paylaşmadan önce içeriğine göz atın.