2013-01-13 62 views
0

我想基於從數據庫中獲得的值包含文件。在內部類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擴展之前的尾部斜線以及點被遺漏了。感謝您的幫助:)

+1

你正在使用相對路徑,所以它將取決於當前的工作目錄來查找你的文件(除了include_path)。您可以通過使用'getcwd()'函數來檢查它是否正確以及期望的結果。 – nickb

+2

'modules/page.php!=/modules/page.php'!(好吧,可能不會)檢查你的絕對路徑 –

+0

$ elements [module]也可以正確地引用你的數組鍵,$ elements ['module']以避免令人討厭的錯誤。 – Cups

回答

0

您正在看到如果"modules/".$page."php"存在但試圖包含"/modules/".$page."php"這可能不是相同的東西(請注意後者的領先/)。

if(file_exists("modules/".$page."php")) include("modules/".$page."php"); 
1

如果使用包括( 「模塊/ tax.php)」;它工作得很好。

在代碼中,你使用

include("/modules/".$page."php"); 
     ^-- Note the leading/

嘗試取出/

0

確定香港專業教育學院解決了這個問題謝謝你們:)每個答案是有幫助:)(答案是組合你的回答+我需要更多的注意力,我在PHP擴展之前就忘記了......勞爾斯......當你疲倦的時候,爲了能夠正確認識你,你必須採取一個措辭斷斷續續的措辭。再次感謝你們:)

相關問題