Giriş

Bölüm 9

Hosting bir sistemdir: bir şeyi değiştirmeden önce gerçekleri belirleyin

Bir barındırma sorunu kolayca “betik bozuk” gibi görünebilir; gerçek neden PHP sürümü, eksik eklenti, dolu dosya sistemi, izinler, ağ yolu veya posta iletimi olabilir. Önce gerçekten sahip olduğunuz ortamı tanımladığınızda tanılama çok daha sakin ve sistemli ilerler.

Aynı proje başka bir sunucuda farklı davranabilir

Dosyalar aynı olabilir ama çalışma ortamı aynı değildir. PHP sürümü, yüklü eklentiler, dosya sistemi sınırları, sahiplik, izinler, saat, ağ erişimi ve sunucu politikası uygulamanın ne yapabileceğini etkiler.

Bu yüzden ilk yararlı soru “neyi değiştirmeliyim?” değil, “bu hangi ortamda çalışıyor?” sorusudur. Terminal bu belirsiz ortamı incelenebilir gerçeklere dönüştürür.

Bir ekranlık gerçekle başlayın

core geçerli lil Core’u, PHP’yi, arayüz katmanını, eklenti dosyasını, güncellemeleri, aktif dosyayı ve dizini gösterir. doctor -q kompakt bir sağlık görünümü verir; sys host ve sys uptime sunucuyu ve sistemin ne kadar süredir çalıştığını anlatır.

Sağlıklı bir özet, her uygulamanın sağlıklı olduğunu kanıtlamaz. Bu bir başlangıç çizgisidir: daha derine inmeden önce makine, Core veya çalışma ortamının beklediğiniz şey olmadığını hızlıca fark etmenin yoludur.

core
doctor -q
sys host
sys uptime

Bir PHP özelliği yalnızca bu çalışma ortamı gerçekten sağlıyorsa vardır

php version, php modules ve doctor extensions özelliklerle ilgili soruları doğrudan yanıtlar. IMAP, SQLite, GD veya bir kriptografik özellik bir barındırma planında bulunup diğerinde bulunmayabilir.

Eksik bir özellik, yanlış komutla aynı şey değildir. Rastgele geçici çözüm yerine açık özellik hatasını tercih edin: önce eklentiyi doğrulayın, sonra etkinleştirme, başka araç seçme veya işi başka ortama taşıma kararını verin.

php version
php modules
php info memory -c
doctor extensions

Boş alan, dizin kullanımı ve izinler farklı sorulardır

disk . dosya sistemi kapasitesini bildirir; disk . -r geçerli ağacı bilinçli biçimde dolaşıp kullanımını hesaplar. stat bir yolun gerçekte ne olduğunu söyler. İzinler başka bir katmandır: dosya var olabilir ve boş alan bulunabilir ama PHP yine de okuyamayabilir veya yazamayabilir.

Her şeyi yazılabilir yaparak “izinleri düzeltmeyin”. Sahibi ve erişim modunu inceleyin, yalnızca değişmesi gereken en küçük hedefi değiştirin ve tekrar doğrulayın. İzinler yerel erişim sınırıdır; kimlik doğrulama veya şifreleme yerine geçmez.

disk .
disk . -r
stat .

Silmeden, yeniden başlatmadan veya tahmin etmeden önce günlükleri okuyun

log -l olası günlükleri keşfeder. İlgili dosyayı bildiğinizde sınırlı başlangıç ve son bölüm okumaları ve tam metin filtresi, dev bir günlüğü tarayıcıya yüklemeden en yeni kanıtı görmenizi sağlar.

Yararlı bir günlük satırında bağlam vardır: zaman, bileşen, istek veya işlem ve gerçek hata. “Temizlemeden” önce bu bağlamı koruyun. Hatanın tam olarak ne zaman başladığını ve o sırada neyin değiştiğini söyleyebildiğinizde birçok zor sorun sıradanlaşır.

log -l

Ortam değerleri ve e-posta ayrı alt sistemlerdir; ayrı ayrı test edin

env ortam, sunucu ve istek değerlerini okunur şekilde gösterirken hassas isimleri maskeler. Böylece tüm çalışma ortamı’ı körlemesine dökmeden PHP’nin hangi geçici dizin veya sunucu adresini gördüğünü anlayabilirsiniz.

mail kendi tanı yüzeyine sahiptir: yerel PHP posta iletimi ile IMAP bağlantı aynı şey değildir. Site kusursuz görüntülenirken giden e-posta reddedilebilir; IMAP yalnızca eklenti eksik olduğu için kullanılamayabilir. Gerçekten bağımlı olduğunuz alt sistemi test edin.

env server SERVER_ADDR
env TMP
mail

Düzeltmeden önce başlangıç durumunu kaydedin

PHP ayarları ve modüller, izinler veya barındırma yapılandırması değiştirilmeden önce kompakt raporları diagnostics/ içine yönlendirin. Değişiklikten sonra aynı raporları yeniden toplayın ve “şimdi daha iyi gibi” hissi yerine gerçekleri karşılaştırın.

Bu alışkanlık lil-terminal’in çok ötesine taşınır. Linux, macOS, Windows, konteynerlerde ve kontrol panellerinde iyi tanı aynı sırayı izler: ortamı belirle, katmanı izole et, kanıt topla, bir şeyi değiştir, doğrula.

md diagnostics
doctor -j > diagnostics/doctor.json -r
sys > diagnostics/system.txt -r
php version > diagnostics/php.txt -r

Bunu betik olarak saklayın

Bunu hosting-baseline.lil olarak kaydedin. Uygulama verisini değiştirmeden diagnostics/ içine kompakt bir tanı anlık görüntüsü toplar. Barındırma değişikliğinden önce ve sonra anlık görüntüleri saklayın; karşılaştırma çoğu zaman hafızadan daha değerlidir.

#lil
@install md doctor sys php disk log env
md diagnostics
core > diagnostics/core.txt -r
doctor -q > diagnostics/doctor.txt -r
sys > diagnostics/system.txt -r
php version > diagnostics/php.txt -r
disk . > diagnostics/disk.txt -r
log -l > diagnostics/logs.txt -r
env server SERVER_ADDR > diagnostics/server.txt -r