# Geliştirme Ortamı Kurulumu

https://dev.wisecp.com/tr/gelistirme-ortami-kurulumu

Bozabileceğiniz bir kurulum edinin, teşhis anahtarlarını açın ve önemli bir şey yazmadan önce döngünün çalıştığını doğrulayın.

## Genel Bakış

Geliştirme sahte bir kopyaya karşı değil, gerçek bir kuruluma karşı yapılır. Ayrı bir geliştirici sürümü yoktur: müşterilere hizmet veren kodun aynısını genişletirsiniz. Tek fark hangi teşhislerin açık olduğu ve onu bozmanıza izin verilip verilmediğidir.

Dolayısıyla kurulacak ilk şey bir araç değil, bir sınırdır. Kimsenin bağımlı olmadığı, kendi veritabanı ve kendi alan adı olan bir kurulum kullanın. Aşağıdaki her talimat bunu varsayar.

## Ön Koşullar

- Normal bir web kurulumunun ihtiyaç duyduğu eklentilerle PHP 8.2 ya da üstü ve aynı PHP'ye kabuktan erişim.
- MySQL ya da MariaDB ve yalnızca size ait bir veritabanı.
- Kurulum dizinini sunabilen bir web sunucusu ve zamanlanmış bir komut çalıştırabilme imkânı.
- Bozmakta özgür olduğunuz bir kurulum. Gerçek müşterisi olan bir kurulumda asla geliştirme yapmayın.

## Neyin Nerede Olduğu

- **coremio/**: Uygulama: sınıflar, controller'lar, modeller, operation'lar, yardımcılar, modüller, kancalar, çeviriler ve yapılandırma. Bir güncellemenin değiştirdiği kısım burasıdır.
- **coremio/modules/**: Modüller; tip başına bir dizin, içinde modül başına bir dizin. Kendi modülleriniz buraya gelir.
- **coremio/configuration/**: Yapılandırma dosyaları. Dizi döndüren PHP dosyalarıdır ve ayarlar kaydedildiğinde panel tarafından yeniden yazılırlar.
- **templates/**: Şablonlar: sabit yönetim paneli, temalı site, müşteri paneli ve bildirim şablonları.
- **templates/website/**: Temalar. Kendi temanız kendi adıyla buraya gelir.
- **coremio/storage/**: Çalışma zamanı çıktısı: önbellek, loglar, geçici dosyalar. Yazılabilir olmalı ve ihtiyacınız olan hiçbir şeyi burada tutmayın.

## Adım Adım

### Çalışma Zamanını Kontrol Edin

1. Kabukta `php -v` çalıştırın ve sürümün 8.2 ya da üstü olduğunu doğrulayın.
2. Web sunucusunun kullandığı ikilinin aynısı olduğunu doğrulayın. Kabuğun bir sürümü, sitenin başka bir sürümü çalıştırması, imkânsız görünen hataların kaynağıdır.
3. `coremio/storage` dizininin web sunucusunun çalıştığı kullanıcı tarafından yazılabilir olduğunu doğrulayın.

### Teşhisleri Açın

1. `coremio/configuration/debug.php` dosyasını açın. Düz bir anahtar dizisi döndürür ve başlangıç bunların beşini, kodun geri kalanının sınadığı sabitlere çevirir.
2. `error` anahtarını `true` yapın. Bu, hata işleyicisinin okuduğu `ERROR_DEBUG` sabitini tanımlar; böylece hatalar genel bir sayfaya dönüşmek yerine ekranda görünür.
3. `logging` anahtarını `true` yapın (`LOG_SAVE` sabitini tanımlar) ki hata günlüğü ne olduğunu kaydetsin.
4. Belirli bir sorgunun peşinde değilseniz `query-logging` kapalı kalsın. Gürültülüdür ve yanındaki adres listesiyle sınırlıdır.
5. Herhangi bir sayfayı yenileyin. Kendi kodunuzdaki kasıtlı bir hata artık sessiz kalmak yerine görünür olmalıdır.

### Döngüyü Doğrulayın

1. `php coremio/errlog.php stats` çalıştırın. Hata günlüğünün toplamlarını gösterir; bu hem kabuk PHP'sinin hem depolama dizininin çalıştığını kanıtlar.
2. Zararsız bir yerde kasıtlı bir hata yapın, sayfayı yükleyin ve `php coremio/errlog.php list --limit=5` ile bulun.
3. Kasıtlı hatayı geri alın. Artık çalışan bir düzenle, yenile, teşhis et döngünüz var.

## Örnek

Anahtarlar, her birinin tanımladığı sabit ve sürekli kullanacağınız iki komut.

```php
return [
    'demo'                    => false,   // DEMO_MODE        her yazma reddedilir
    'error'                   => true,    // ERROR_DEBUG      genel sayfa yerine hatayı göster
    'developer'               => true,    // DEVELOPMENT      paneldeki geliştirici kolaylıkları
    'logging'                 => true,    // LOG_SAVE         hataları hata günlüğüne yaz
    'logging-module'          => true,    // LOG_SAVE_MODULE  modül trafiğini de logla
    'query-logging'           => false,   // doğrudan okunur; çok gürültülü, yalnız sorgu ararken
    'query-logging-valid-ips' => ['127.0.0.1', '::1', 'UNKNOWN'],
];

// Başlangıçtan sonra herhangi bir noktada aynı bölü yolla geri okunur:
$loud = Config::get('debug/query-logging');
```

```bash
# Kurulum komut satırından sağlıklı mı?
php coremio/errlog.php stats

# En son ne düştü?
php coremio/errlog.php list --limit=5
```

## Tuzaklar

> **Yapılandırma dosyaları derlenen PHP'dir**
> 
> Sunucu, daha önce okuduğu bir dosyanın derlenmiş kopyasını tutuyor olabilir. Elle yapılan bir düzenleme o zaman etkisiz görünebilir. Bir değişiklik görünmüyorsa, değişiklikten şüphelenmeden önce elenecek ilk şey budur.

> **Müşterilerin görebildiği yerde teşhisleri kapalı tutun**
> 
> Ekranda görünen hatalar ve sorgu logları dosya yollarını, sorguları ve iç durumu açığa çıkarır. Yerleri bozmanıza izin verilen kurulumdur, başka hiçbir yer değil.

> **Zamanlanmış işler kendi kendine çalışmaz**
> 
> Yenilemeler, hatırlatmalar, sağlama yeniden denemeleri ve temizlik bir zamanlayıcıyla olur. Zamanlanmış komut kurulumunuzda çalışmıyorsa bu akışlar hiç başlamaz. Hiç başlamamış bir şeyi hata ayıklıyor olursunuz.

## İlgili Makaleler

- [WISECP için Geliştirme](https://dev.wisecp.com/tr/wisecp-icin-gelistirme)
- [Hata Ayıklama ve Loglar](https://dev.wisecp.com/tr/hata-ayiklama-ve-loglar)
- [İlk Değişikliğiniz](https://dev.wisecp.com/tr/ilk-degisikliginiz)
- [Bootstrap ve Otomatik Yükleme](https://dev.wisecp.com/tr/bootstrap-ve-otomatik-yukleme)
