Aramaları dahil nokta-çizgi, PHP için ne yapar?

6 Cevap php

A. Bu ne işe yarıyor?

require ("./file.php");

Buna göre B.?

require ("file.php");


(Onun not up-tek-dizinde .. hangi olurdu)

require ("../file.php");

6 Cevap

./ current dizin. Bu büyük ölçüde, sadece file.php aynıdır, ancak birçok durumda (Bu bir dahil) yerine only akımı kontrolü, PHP bir dosya görünebilir herhangi bir standart yerleri kontrol etmez dizin.

PHP documentation (son cümle dikkat) Gönderen:

Dahil olmak üzere dosyaları önce geçerli çalışma dizini her include_pathdaki giriş nispetle için baktı, ve sonra betik dizininde vardır. Örneğin senin include_pathdaki kütüphaneler ise, geçerli çalışma dizini eklemek / a.phpı dahil ve bu dosyada "b.php" dahil, orada / www / b.php ilk sonra / www / kütüphaneler baktı / ve / www / / bulunmaktadır. Dosya adı ile başlar. / Veya .. /, yalnızca geçerli çalışma dizininde aranacaktır.

İlk sürümü nispeten ... doğrudan idam dosyası dosyaları dahil etmek için iç mekanizması zorlar. Yani, örneğin var

index.php

// directly executed script (php -f index.php or from a browser)
include 'second.php';

second.php

// This is included relatively to index.php
// Actually, it is first searched relatively to include_path, then relatively
// to index.php
include './third.php';

third.php

// This is included relatively to second.php ONLY. It does not search
// include_path
return "foo";

The Short Answer

Haklısın, o bir dizin yukarı değil. Bir. Eğer konum dizine eder, ve .. ana dizine gelir.

Meaning, ./file.php and file.php are functionally equivalent in PHP. Here's the relevent page of documentation: http://us.php.net/manual/en/wrappers.file.php

The Longer Answer

Ancak, bu bağlamda aynı iş sırf onlar hep aynı olduğu anlamına gelmez.

Bir * nix kabuk ortamında faaliyet konum ve yürütülebilir bir dosya adını yazdığınızda, kabuk PATH dizinleri bakacağız, ama CWD'sindeki bakmak olmaz, ya içeri anda konum dizini

Yani, adlı bir dosya olan bir dizinde iseniz: myprogram.php (Bu bir PHP CLI dosya olacaktır) ve sadece yazın:

myprogram.php

program çalıştırılabilir olup olmadığı önemli değil. Kabuk dosya için / bin /, / usr / bin / etc bakacağız, ama içinde aramaz. / Veya içeri konum dizini

PATH için dizin ekleme olmadan bu programı yürütmek için, yazmanız gerekir

./myprogram

Yani gerçekten,. / Daha açık olduğunu. Bu, "Aradığınız dosya burada olmak HAS" ve. / Hayır demektir, "dosya dosyaları arıyor yerde programı olacak" demektir.

Bunun için only geçerli dizinde dosya eklemek veya dosya mevcut değilse, başarısız php anlatıyorsun.

Eğer format "indexcommon3.php" kullanımı ve dosya değilse mevcut php include_path sistem değişkeni içine arayacaktır.

Başvuru için kullanabilirsiniz http://www.php.net/manual/en/function.include.php

Nokta-çizgi yerine ayrıca include_path ayarında belirtilen yolları aramak yerine, yalnızca geçerli dizinde bulunan dosyayı zorlar.

Bu açıkça current dizin adlandırma oluyor.