我想開發一個網站。我希望用PHP編寫的網站的不同部分將位於不同的文件中。如「posts.php」,「recents.php」等。我試圖使用函數「include」來包含目錄「/ codes /」中的文件。但它不起作用。PHP包括功能不能正常工作
的事情發生時,如果我在原來的HTML頁面的中間放<?php include '/codes/posts.php' ?>
(頁面保存在PHP格式)。添加行之前的代碼部分正在工作,但添加行之後的部分消失了。不知道爲什麼。我究竟做錯了什麼?
我想開發一個網站。我希望用PHP編寫的網站的不同部分將位於不同的文件中。如「posts.php」,「recents.php」等。我試圖使用函數「include」來包含目錄「/ codes /」中的文件。但它不起作用。PHP包括功能不能正常工作
的事情發生時,如果我在原來的HTML頁面的中間放<?php include '/codes/posts.php' ?>
(頁面保存在PHP格式)。添加行之前的代碼部分正在工作,但添加行之後的部分消失了。不知道爲什麼。我究竟做錯了什麼?
試試這個,你忘了添加一個單引號:
<?php
// Enable error logging:
error_reporting(E_ALL^E_NOTICE);
// Add a single quote:
include '/codes/posts.php';
?>
最有可能的,你遇到了一個路徑問題的。 /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';
'通過set_include_path(「/無功/網絡/包括/」 PATH_SEPARATOR get_include_path());'是一個更好的辦法,而且不需要您進行硬編碼絕對路徑,一次次 –
噢噢噢,我的天堂之前沒有看到過,我必須檢查一下。它隻影響當前的工作腳本? – miah
包含路徑在自動加載器被調用時使用,或者當include/require語句不能被解析爲當前腳本的相對路徑時,只需嘗試'echo get_include_path();'以查看PHP使用的路徑,通常它包含'/ usr/shared/lib/php:/ usr/lib/php'和其他一些路徑......它就像你在.bashrc文件中所做的一樣($ echo $ PATH)一個bash外殼顯示類似的東西) –
固定分號的問題後,也考慮即:
如果路徑定義 - 無論是絕對的(從驅動器盤符或\ Windows上,或/在Unix/Linux系統),或相對於當前目錄(開始或..) - include_path將被完全忽略。例如,如果文件名以../開頭,則解析器將在父目錄中查找以查找所請求的文件。
所以無論是include './codes/posts.php';
或include 'codes/posts.php'
,第一個版本查找文件,相對於當前的工作目錄,第二個使用include路徑。
PS:最好使用require_once
或include_once
,以避免包括相同的功能/類定義多次,這將casuse問題(重新聲明函數)
非常感謝你,它的工作現在! –
@EsperoShoumma:沒問題。很高興我能幫上忙。但是,如果您不介意我的說法,那麼SO表示謝謝的方式是通過點擊答案旁邊的空心V標誌(鼠標變成綠色的標誌)來讚揚/接受答案 –
@EsperoShoumma:After看着你的個人資料,我注意到你還沒有接受一個單一的答案,請[閱讀此以瞭解如何接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-回答工作)。作爲獎勵,接受答案也會給你+2聲望 –
你缺少報價。 '包括「/codes/posts.php」;' – Bora
檢查,如果出口/模具被稱爲該腳本 –
您可能還需要啓用錯誤報告,因此您可以更容易地看到什麼錯:http://php.net /manual/en/function.error-reporting.php – n0wak