2012-10-25 14 views
6

Tworzymy strony internetowe, które muszą być przeniesione z lokalnych serwerów programistycznych, na serwer testowy, a następnie na serwer na żywo. Z tego powodu stworzyliśmy zmienną:PHP zawiera zmienną na ścieżce

<?php $path = '/_Folder_/_SubFolder_'; ?> 

Kiedy przechodzimy na stronę z serwera na drugi, chodzi o to, aby po prostu zmienić definicję ścieżki dolarów do modernizacji do nowego serwera rozwoju. Obecnie na każdej stronie, kiedy nazywają to piszemy:

<?php include('../_includes/_css.php'); ?> 

ale co próbuję zrobić, to:

<?php include($path.'/_includes/_css.php'); ?> 

mojego wyniku liczę na to:

<?php include('/_Folder_/_SubFolder_/_includes/_css.php'); ?> 

Byłem braku marnie skutkuje:

Warning: include (/ Folder /_SubFolder_/_includes/_css.php) [function.include]: failed to open stream: Nie ma takiego pliku lub katalogu C: Program Files \ \ Apache Software Foundation \ Apache2.2 \ htdocs \ FREEDOM2012_FREEDOM2012_DEFAULT_ \ kwatery \ guest-rooms.php na linii 15

Inny problem nadal muszę zawierać zmienną źródła poprzez wywołanie "../"

<?php include('../_includes/_var.php'); ?> 

jeśli ktokolwiek ma jakiś wgląd w to, jak mógłbym to zrobić wydajniej, byłbym najbardziej wdzięczny. Dziękuję bardzo za poświęcony czas, cierpliwość i wysiłek w odpowiedzi.

+0

Czy próbowałeś 'echo'ing ciągu, który karmisz' include() '? – Sammitch

+0

Ponieważ jesteś na serwerze Windows, potrzebujesz ukośników zamiast ukośników. – jtheman

+0

po prostu usuń wiodące '/'. – dualed

Odpowiedz

2

Dlaczego nie zainicjalizujesz zmiennej $ path dynamicznie raz na zawsze i niezależnie od środowiska?

jak:

$path = dirname(__FILE__); 

Począwszy od PHP 5.3, masz również __DIR__ skrót, który działa tak samo jak powyżej.

@see: http://www.php.net/manual/en/language.constants.predefined.php

+0

Używany z 'set_include_path' http://php.net/manual/en/function.set-include-path.php możesz ładnie go ładować. i mieć przyzwoite ścieżki względne w swoich pakietach. –

+0

@Martin Lyne Dzięki za to –

2

trzeba pokazać poprzedni katalog z

<?php include('../_includes/_css.php'); ?> 

becose masz "../". Jeśli pełna ścieżka z "css.php" =/_ * Folder * _/podfolder /_includes/_css.php, to trzeba użyć następny kod:

<?php $path = './_Folder_/_SubFolder_'; 
include($path.'/_includes/_css.php'); ?> 

indziej najpierw pokaż pełną ścieżkę do pliku _css.php

Powiązane problemy