2013-08-05 101 views
3

我想開發一個網站。我希望用PHP編寫的網站的不同部分將位於不同的文件中。如「posts.php」,「recents.php」等。我試圖使用函數「include」來包含目錄「/ codes /」中的文件。但它不起作用。PHP包括功能不能正常工作

的事情發生時,如果我在原來的HTML頁面的中間放<?php include '/codes/posts.php' ?>(頁面保存在PHP格式)。添加行之前的代碼部分正在工作,但添加行之後的部分消失了。不知道爲什麼。我究竟做錯了什麼?

+2

你缺少報價。 '包括「/codes/posts.php」;' – Bora

+0

檢查,如果出口/模具被稱爲該腳本 –

+0

您可能還需要啓用錯誤報告,因此您可以更容易地看到什麼錯:http://php.net /manual/en/function.error-reporting.php – n0wak

回答

1

試試這個,你忘了添加一個單引號:

<?php 
// Enable error logging: 
error_reporting(E_ALL^E_NOTICE); 

// Add a single quote: 
include '/codes/posts.php'; 
?> 
+0

抱歉,我在主腳本中添加了代碼,忘記在這裏添加它們。現在添加它們。 –

+0

你收到什麼錯誤? – Duikboot

+0

沒有錯誤。添加行後的其餘代碼就消失了。沒有錯誤報告。 –

1

最有可能的,你遇到了一個路徑問題的。 /code/posts.php是絕對路徑,所以除非在基本目錄中有一個名爲code的文件夾,否則它找不到該文件。

你需要通過降低第一/code/posts.php)建立一個相對路徑,也需要聲明的絕對路徑的主目錄

define("BASEDIR", '/home/username/public_html/'); #typical path on a linux server using cpanel 
include BASEDIR . 'code/posts.php'; 
+0

'通過set_include_path(「/無功/網絡/包括/」 PATH_SEPARATOR get_include_path());'是一個更好的辦法,而且不需要您進行硬編碼絕對路徑,一次次 –

+0

噢噢噢,我的天堂之前沒有看到過,我必須檢查一下。它隻影響當前的工作腳本? – miah

+0

包含路徑在自動加載器被調用時使用,或者當include/require語句不能被解析爲當前腳本的相對路徑時,只需嘗試'echo get_include_path();'以查看PHP使用的路徑,通常它包含'/ usr/shared/lib/php:/ usr/lib/php'和其他一些路徑......它就像你在.bashrc文件中所做的一樣($ echo $ PATH)一個bash外殼顯示類似的東西) –

2

固定分號的問題後,也考慮即:

如果路徑定義 - 無論是絕對的(從驅動器盤符或\ Windows上,或/在Unix/Linux系統),或相對於當前目錄(開始或..) - include_path將被完全忽略。例如,如果文件名以../開頭,則解析器將在父目錄中查找以查找所請求的文件。

form the PHP docs

所以無論是include './codes/posts.php';include 'codes/posts.php',第一個版本查找文件,相對於當前的工作目錄,第二個使用include路徑。

PS:最好使用require_onceinclude_once,以避免包括相同的功能/類定義多次,這將casuse問題(重新聲明函數)

+0

非常感謝你,它的工作現在! –

+0

@EsperoShoumma:沒問題。很高興我能幫上忙。但是,如果您不介意我的說法,那麼SO表示謝謝的方式是通過點擊答案旁邊的空心V標誌(鼠標變成綠色的標誌)來讚揚/接受答案 –

+0

@EsperoShoumma:After看着你的個人資料,我注意到你還沒有接受一個單一的答案,請[閱讀此以瞭解如何接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-回答工作)。作爲獎勵,接受答案也會給你+2聲望 –