29 Ekim 2026 - 01:27
PHP include(): Failed to Open Stream Hatası ve Dosya Yolu Görseli
PHP

PHP include(): Failed to Open Stream Hatası ve Dosya Yolu

0 Yorumlar

include(): Failed to open stream ve ardından gelen Failed opening required mesajları çoğu zaman dosyanın silindiğini değil, PHP'nin aradığı yolun uygulamanın düşündüğü yolla uyuşmadığını gösterir. Özellikle yerel Windows geliştirme ortamında çalışan göreli bir yolun Linux sunucuda bulunamaması sık görülen bir geçiş sorunudur.

Göreli yolun neye göre çözüldüğünü bulun

include 'config.php'; ifadesinde yol, PHP'nin çalışma bağlamına ve include_path ayarına göre aranır. İstek başka bir giriş dosyasından, cron görevinden ya da farklı çalışma dizininden başlatıldığında göreli yolun çözümlenme biçimi beklenenden farklı olabilir. Önce hatadaki tam dosya ve aranan yol bilgisini sunucu günlüğünden inceleyin; yolu ziyaretçiye açık hata mesajına koymayın.

Bir dosyanın kendi konumuna göre başka bir dosyayı bulması gerekiyorsa __DIR__ ile sabit bir başlangıç noktası kurun:

GENEL
require_once __DIR__ . '/../app/bootstrap.php';

Bu örnek, mevcut PHP dosyasının bulunduğu dizini temel alır. Dizinin gerçekten var olduğunu ve uygulama kullanıcısının okuyabildiğini ayrı ayrı denetlemek gerekiyorsa kontrollü tanılama sırasında realpath() ve is_readable() yardımcı olabilir. Dosya yoksa uygulama akışında ne yapılacağı, dosyanın zorunlu olup olmadığına bağlıdır: temel bootstrap için require, isteğe bağlı özellik için kontrollü include tercih edilir.

Tanı sırasında geçici olarak getcwd() ile çalışma dizinini ve get_include_path() ile arama yolunu kayda alabilirsiniz. Bu değerleri kalıcı olarak ziyaretçiye basmayın; sunucu dizin yapısını açığa çıkarabilir. Tam yol bir ortam değişkeninden geliyorsa değerin gerçekten tanımlı olup olmadığını da kontrol edin; boş değişkenle birleştirilmiş göreli yol hatayı daha yanıltıcı hale getirir.

Linux'ta harf duyarlılığını unutmayın

Windows geliştirme makinesi dosya adındaki büyük-küçük harf farkını tolere edebilir; Linux dosya sisteminde Config.php ile config.php farklı adlardır. Git geçmişinde yalnızca harf değişikliği yapıldıysa bazı Windows yapılandırmaları bu yeniden adlandırmayı beklediğiniz gibi kaydetmemiş olabilir. Sunucuda dosya adını, Git deposundaki adı ve kodda kullanılan yolu karakter karakter karşılaştırın.

İzin hatasında dosyanın yalnızca varlığına değil, PHP-FPM veya web sunucusunun çalıştığı kullanıcının üst dizinleri geçme ve dosyayı okuma izinlerine de bakın. Dosyaya geniş yazma izni vermek çözüm değildir; en az ayrıcalıklı sahiplik ve izin düzenini koruyun.

include_path, include ve require davranışları PHP'nin include belgesinde açıklanır. __DIR__ değerinin kapsamı için magic constants başvurusuna bakın. Daha büyük uygulamalarda dosyaları MVC katmanlarına ayırırken bu yolları tek noktadan yükleyen yapı kurmak için çok katmanlı PHP MVC mimarisi yazısı yardımcı olabilir.

Benzer Yazılar

Yorumlar (0)

Henüz yorum yok. İlk yorum yapan sen ol!

Yorum Yap