Pekka'nın kabul ettiği cevap eksik ve genel bağlamda yanıltıcıdır. Dosya göreceli bir yol olarak sağlanmışsa, çağrılan dil yapısı includeonu aşağıdaki şekilde arayacaktır.
İlk olarak, include_pathile ayarlanabilen ortam değişkeninin yollarından geçecektir ini_set. Bu başarısız olursa, çağıran betiğin kendi dizininde dirname(__FILE__)( __DIR__php> = 5.3 ile) arayacaktır. Bu da başarısız olursa, ancak o zaman çalışma dizininde arayacaktır! Sadece, varsayılan olarak, ortam değişkeninin şu anki çalışma dizini olan include_pathile başladığı ortaya çıktı .. Mevcut çalışma dizininde ilk olarak arama yapmasının tek nedeni budur. Bkz. Http://php.net/manual/en/function.include.php .
Dosyalar, verilen dosya yoluna göre dahil edilir veya hiçbiri belirtilmezse, belirtilen include_path. Dosya include_path içinde bulunamazsa, include sonunda başarısız olmadan önce çağıran komut dosyasının kendi dizinini ve geçerli çalışma dizinini kontrol eder.
Dolayısıyla, sorunun ilk kısmının doğru cevabı, dahil edilen arama komut dosyasının nerede olduğunun önemli olmasıdır. Sorunun son kısmının cevabı , bir web sunucusu bağlamında ilk çalışma dizininin, PHP tarafından işlenirken diğerlerinin tümünü içeren, çağrılan betiğin dizini olmasıdır. Bir komut satırı bağlamında, ilk çalışma dizini, çağrılan betiğin bulunduğu dizin olmak zorunda değil, php komut isteminde çağrıldığında olduğu gibi olur. Geçerli çalışma dizini Ancak PHP fonksiyonu ile işletilen anda değiştirilebilir chdir. Bkz. Http://php.net/manual/en/function.chdir.php .
Bu paragraf, diğer cevaplara yorum yapmak için eklenir. Bazıları, güvenmenin include_pathdaha az sağlam olduğunu ve bu nedenle ./pathveya gibi tam yolların kullanılmasının tercih edildiğini belirtmişlerdir __DIR__ . /path. Bazıları, çalışma dizininin .kendisine güvenmenin güvenli olmadığını, çünkü değiştirilebilir olduğunu söyleyecek kadar ileri gitti . Bununla birlikte, bazen çevre değerlerine güvenmeniz gerekir. Örneğin, include_pathboş ayarlamayı isteyebilirsiniz , böylece çağıran betiğin dizini, mevcut çalışma dizininden önce bile arayacağı ilk yer olur. Kod zaten harici kaynaklardan düzenli olarak yazılmış ve güncellenmiş olabilir __DIR__ve kod her güncellendiğinde öneki yeniden eklemek istemezsiniz .