2015-05-10 96 views
4

必須有我忽略的東西,但我似乎無法讓我的包含按照預期使用相對路徑工作。在MAMP DocumentRoot的是在httpd.conf配置是這樣的:php包括不能使用相對路徑 - DocumentRoot的問題? MAMP?

# MAMP DOCUMENT_ROOT !! Don't remove this line !! 
DocumentRoot "/Applications/MAMP/projects/journalproject」 

造就了我的網站在http://localhost:8888/和包括正常工作,如果我用這樣的路徑:

<?php include('nav.php'); ?> 

但是,如果我把我的包含文件到一個文件夾中,包括在頁面上顯示不出來:

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

這是包括文件的路徑:/journalproject/includes/nav.php

我從這裏呼喚它:/journalproject/journals/index.php

我還可以得到包括如果我用這樣的路徑工作:

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

我不知道爲什麼我需要指定當一個錨鏈接毫不費力地使用相對路徑找到相同的文件中包含的路徑:

<a href="/includes/nav.php">Find nav include</a> 

我不知道在哪裏可以從這裏走。任何幫助將不勝感激。

+0

<?php include('includes/nav.php'); ?>相對於你的文檔根目錄(假設你的腳本正在運行,或者你的包含路徑已設置)。 – fbas

+0

感謝您的幫助。我試過<?php include('includes/nav.php'); ?>沒有成功,即使是駐留在根文件夾中的文件也是如此。我認爲這是對我的一個誤解,即Apache的文檔根目錄也會爲PHP指定路徑。我嘗試了這個,它的工作原理:<?php include($ _ SERVER ['DOCUMENT_ROOT']。'/ includes/include-nav.php');如果我回應它給我的變量「/ Applications/MAMP/projects/journalproject」。我希望有一個更好的方法。我想我會繼續使用<?php include('../ includes/nav.php'); ?> –

+0

很高興你找到了一些成功。你也可以在PHP中指定一個INCLUDE PATH,並且這些路徑將被搜索你的包含/需求。通過這種方式,您可以指定與包含路徑相關的文件,而無需意識到調用include/require的特定.php文件的位置:http://php.net/manual/en/function.set-include-path。 php ie'set_include_path(get_include_path()。PATH_SEPARATOR。$ _SERVER ['DOCUMENT_ROOT'])' – fbas

回答

0

我認爲下面的代碼不起作用,因爲它被視爲絕對路徑,因爲它以「/」開始,告訴PHP從Unix操作系統中的文字「/」目錄中查找: <?php include('/includes/nav.php'); ?>

嘗試: <?php include('includes/nav.php'); ?>