2016-06-03 7 views
0
Root 
/index.php ----//The homepage, including head.php works fine 
/s/affiliate.php ----//A sub page, will not load the head.php 
/structure/head.php 

So ist das oben beschriebene. Ich versuche, Seiten auf meiner Website einzubinden. Ich habe Hunderte von Seiten. Es funktioniert gut mit der index.php mitPHP Include funktioniert nicht in Unterverzeichnisse?

Aber auf jeder Unterseite, es einfach nicht laden. Ich denke, es ist die Art, wie es durch Verzeichnisse sucht, aber ich habe auch versucht, es von Root zu suchen und es funktioniert immer noch nicht, irgendwelche Ideen?

<?php include($_SERVER['DOCUMENT_ROOT'] . '/structure/head.php'); ?> 
+0

Zeigen Sie Ihren 'DOCUMENT_ROOT' Wert – maximkou

+0

Nur für die Zukunft nannte dies Debugging. Du kannst mit einfachen Dingen beginnen wie 'var_dump ($ _ SERVER ['DOCUMENT_ROOT']. '/structure/head.php')' Und arbeite dich hoch zu xdebug oder so. Sehr nützliche Fähigkeit;) –

+0

Mögliches Duplikat von [Sind PHP Pfade relativ zur Datei oder zum aufrufenden Code?] (Http://stackoverflow.com/questions/7378814/are-php-include-paths-relative-to-the-) -file-or-the-calling-code) – HPierce

Antwort

0

Try

$_SERVER['HTTP_HOST'] 

statt DOCUMENT_ROOT,

EDIT

Diese Arbeit sollte

verwenden
$protocol = $_SERVER['HTTPS'] == '' ? 'http://' : 'https://'; 
$web_root = $protocol . $_SERVER['HTTP_HOST']; 
define('WEB_ROOT', $web_root); 

include (WEB_ROOT.'/file.php'); 
+0

Das hat leider nicht funktioniert

+0

http://php.net/manual/en/language.constants.predefined.php DIR one –

+0

Neben __DIR__ denke ich, die beste Option ist es, eine Konfigurationsdatei zu erstellen und dort Ihren absoluten Pfad zu definieren. Sie können diesen absoluten Pfad jederzeit später verwenden $ protocol = $ _SERVER ['HTTPS'] == ''? "http: //": "https: //"; $ web_root = $ Protokoll. $ _SERVER ['HTTP_HOST']; define ('WEB_ROOT', $ web_root) – DeChadou

1

Verwenden Sie relative Pfade:

include("../structure/head.php"); 
+0

Hatte eine einfachere Methode, die auf allen Seiten gleich bleiben könnte. –

+0

Wenn Ihre Unterseite eine Controller-Aktion war, die von Ihrem Index aus über einen Router aufgerufen wurde und eine Vorlage geladen hat include inside, dann wären alle Pfade relativ zum Index. Aber Architektur ist off-topic. – SparK

+0

kann ich vorschlagen, dass _absolute Pfade immer verwendet werden _ dh 'include (__ DIR__. '/'." ../ structure/head.php ");' Auf diese Weise wird das 'aktuelle Arbeitsverzeichnis 'nie benutzt relativ zum aktuellen Skript ist immer enthalten. d. h. imo, verwende niemals relative Pfade in PHP-Skripten. _Verwenden Sie immer absolute Pfade mit einem relativen Verzeichnis als Teil des Pfads_. –

0

Verwenden Sie include ("../ path/to/head.php"); Dies sollte funktionieren, da es in der Lage sein wird, Ihren Code an das Unterverzeichnis zu richten, in dem Sie Ihre head.php gespeichert haben.