我想基於從數據庫中獲得的值包含文件。在內部類page.php文件的網頁我有這個功能來得到我想要的數據:php:包含數組中定義的文件時失敗
function getPage(){
$page=array(
'title'=>$this->title,
'content'=>$this->content,
'module'=>$this->module
);
return $page;
}
而在pageview.php我這樣稱呼它:$elements=$page->getPage();
功能工作得很好,我把我的內容,這我可以操縱這樣爲例(我知道heredox是不要去,但請忽略它的方式,這不是問題):
echo <<<EOT
<div class='row-fluid'>
<H1> title:$elements[title]</H1></br>
$elements[content]
$elements[module]
</div>
EOT;
現在,這裏是問題。我有一個名爲includeModule功能,這是這樣的:
function includeModule($page){
$page=strtolower($page);
if(file_exists("modules/".$page."php")) include("/modules/".$page."php");
else Echo "No such Module Exists :".$page." </br>";
}
現在讓我們說我想包括一個名爲「tax.php」頁面。如果我使用include("/modules/tax.php)";
它工作得很好。如果我嘗試使用include("/modules/".$elements[module].".php)";
,它什麼也不做(yes $ elements [module]確實只包含單詞「tax」)。 我甚至試着將$ elements [module]的值賦給另一個變量,但什麼也沒有。
最奇怪的部分是,如果我嘗試使用我的函數(includeModule),即使我手動將$ page變量設置爲「tax」,它仍然沒有包含任何內容並且說文件不存在(即使它)?
對此有何幫助?
編輯:我已經嘗試過刪除/但如果我再做一次不包括任何
編輯:我改變功能的痘痘,所以我可以得到一些反饋
if(file_exists("modules/".$page.".php")){
echo "<p>file exists</p>";
include("modules/".$page."**.**php");
}else{
echo getcwd();
Echo "<p>No such Module Exists :".$page."</p>";
}
OK解決。感謝所有的答案。由於我的錯誤,在PHP擴展之前的尾部斜線以及點被遺漏了。感謝您的幫助:)
你正在使用相對路徑,所以它將取決於當前的工作目錄來查找你的文件(除了include_path)。您可以通過使用'getcwd()'函數來檢查它是否正確以及期望的結果。 – nickb
'modules/page.php!=/modules/page.php'!(好吧,可能不會)檢查你的絕對路徑 –
$ elements [module]也可以正確地引用你的數組鍵,$ elements ['module']以避免令人討厭的錯誤。 – Cups