Nasıl () mutlak (yerine göre) yolu dahil bir PHP biçimlendirmek?

10 Cevap php

Benim PHP web sitesinde ve çeşitli iç içe dizinleri çeşitli sayfalarda ben köküne bir yol nispetle belirli bir dosya eklemek istiyorum.

Ne tek bir komut Ben bu sayfaların hem de koyabilirsiniz ...

http://www.example.com/pageone.php
http://www.example.com/somedirectory/pagetwo.php

... Bu sayfa eklemek için:

http://www.example.com/includes/analytics.php

Bu işe yaramazsa:

<?php include('/includes/analytics.php'); ?>

Bu Windows IIS barındırılan olduğu önemli mi?

10 Cevap

Eğer include () veya () (veya * _once sürümler) mutlak bir yolunu gerektirir verirseniz, bu dosya dahil edilecektir. Mutlak bir yol adı UNix bir "/" ile başlar, ve Windows üzerinde bir sürücü harfi ve iki ile.

Göreceli bir yol (başka bir yol) verirseniz, bir maç bulunana kadar PHP, sırayla yapılandırma değeri "include_path" dizinleri arar veya arama için daha fazla dizinleri vardır.

Yani, kısacası, mutlak bir dosya adı içeren bir dosya adı mutlak vermek. Ayrıca işlevine bakın realpath().

Eğer kendi "root" include ayarlamak istiyorsanız, tabii ki :-) of this question (özellikle benim cevap bakabilirsiniz

Sadece kullanabilirsiniz include $_SERVER['DOCUMENT_ROOT'] . "/includes/analytics.php";

Mai diyor Stefan @ gibi, PHP bir "kök" yolu yok ama oldukça kolay bir tanımlayabilirsiniz - en siteleri her zaman (örneğin yapılandırma dosyası) dahil olan bir sayfa var, hangi ekleyebilirsiniz:

define('ROOT', dirname(__FILE__));

Sonra kullanım KÖK içerir. '/ / Analytics.php içerir;

(Eğer PHP ini küresel bir tane olabilir rağmen) IIS üzerinde kurma konusunda emin değil -. Aynı zamanda oldukça kullanışlı bir şey mi apache htaccess kullanabilirsiniz auto_prepend yönergesi vardır.

PHP kök perspektifinden web tarayıcısı açısından web sunucusu değil, kök üzerinde dosya sisteminin üst olduğunu.

Çoğu kişi aşağıda birini yapın.

Global bir yapılandırma dosyası, bir sabit tanımlamak ve ihtiyaç için her aramada kullanan / bulunmaktadır.

Ya da bu gibi bir kod kullanabilirsiniz.

require_once realpath(dirname(__FILE__).'/config.php');
require_once realpath(dirname(__FILE__).'/lib/Database.php');

Çevresel değişkenleri kullanarak bazı durumlarda tehlikeli olabilir ve güvenlik konularında kaynağı olabilir.

Ben yukarıdaki önerileri kombine ve bu ile geldi.

: Benim config.php dosyasında, ben KÖK tanımlamak

define('ROOT', $_SERVER['DOCUMENT_ROOT']);

Sonra benim succeding dosyalarında kullanabilirsiniz:

include_once(ROOT."/someFile.php");

include_once(ROOT."/includes/someFile.php");

Bu çalışıyor.

<?php include('c:/inetpub/example.com/includes/analytics.php'); ?>

Ben sunucudan sunucuya biraz taşınabilir yani c:/inetpub/example.com/ part global değişken çeşit yapmak gerekecek.

Bir dizin yukarı çıkmak için .. kullanın. Yani pageone.php içinde

include 'includes/analytics.php';

pagetwo.php içinde

include '../includes/analytics.php';

İsterseniz bunu tanımlamak olabilir ama sen bildiğim kadarıyla PHP bahsettiğiniz gibi "root" hiçbir kavramı var. İyi şanslar!

Bu çalışıyor.

<?php include('c:/inetpub/example.com/includes/analytics.php'); ?>

Ben sunucudan sunucuya biraz taşınabilir yani c:/inetpub/example.com/ part global değişken çeşit yapmak gerekecek.

Tilde yüzden ne olursa olsun işletim sistemi çalışmaz PHP kodu içinde kullanarak, kabuk tarafından özel bir karakter olarak yorumlanır.

Eğer deneyebilirsiniz bir kullanıcı ev dizinine göreli şey erişmek için çalışıyorsanız getenv() - Windows $HOME bir ortam değişkeni eşdeğer ayarlar eminim.

Ben buldum yoludur:

<?php include $_SERVER['DOCUMENT_ROOT'].'\\Your\\Site\\Path.php' ?>

O \ \ \ dizesi olduğunu, böylece kaçan olabilir bazı özel karakter (yani \ n) olduğunda \ \ necesary olduğunu.

Eğer pencerelerde Çünkü, sen / yerine \ kullanmak zorunda