2009-12-11 17 views
5

Struktura dla bieżącego projektu pracuję na coś takiego jak:PHP include wewnątrz include (innym katalogu)

  • root/index.php
  • root/includes/php/first.php
  • root/includes/php/functions.php

Więc index.php zawiera first.php:

<?php include_once("includes/php/first.php"); ?> 

Zwykle wtedy mój first.php nazwałbym funkcje takie jak:

<?php include_once("includes/php/functions.php"); ?> 

Zakładając względem nadal byłoby ze strony indeksu jednak po przeniesieniu do nowego serwera to nie działa. Próbowałem zrobić względną ścieżkę od first.php:

include_once("functions.php"); 

I to wydaje się teraz działać.

Który normalnie byłby prawidłowy sposób to zrobić? Chcę rozwinąć ten projekt, aby każdy mógł go zainstalować.

Odpowiedz

11

obejmuje są względne do pliku robiącego włączone. Jeśli naprawdę chcesz się upewnić, i uniknąć wszelkich niejasności, można to zrobić:

include dirname(__FILE__) . "/functions.php"; 
+0

Niesamowite dzięki! Nie wiem, dlaczego zadziałało wcześniej, ale to rozwiązanie rozwiąże przyszłe problemy. – kilrizzy

+0

+1 - Zamierzałem zasugerować użycie elementu '$ _SERVER ['SCRIPT_FILENAME']', aby zrobić to samo, ale jest to znacznie lepsze. – Atli

+2

Mam tendencję do tworzenia kilku definicji dla mojej aplikacji PHP i przechowywania mojej ścieżki root_path i web_path tam do użytku w całej – Andrew

0

Zawsze używam:

include ($_SERVER['DOCUMENT_ROOT']."/include/php/functions.php"); 

ten sposób zawsze wiesz, gdzie jesteś (pochodzących z korzenia) i Twój kod można skopiować z miejsca na miejsce.