2012-05-23 147 views
2

我想包括一個文件,但它似乎並不奏效 - 這裏是整個代碼:File_exists但不包括

if (file_exists('config/categories.php')) { 
    include ('config/categories.php'); 
} 

foreach ($categories as $cat_sef => $cat_name) { 
    echo '<a href="'.$full_domain.$cat_sef.'" alt="#">'.$cat_name.'</a><br />'; 
} 

配置的內容/ categories.php是一個簡單的數組:

$categories = array("category-1" => "Category 1", 
"category-2" => "Category 2", 
"category-3" => "Category 3") 

我知道文件的存在是因爲以下工作:

if (file_exists('config/categories.php')) { 
    echo "file exists"; 
} 

但是如果我更換CA數組tegories.php說:

echo "testing"; 

什麼也不會顯示。據我所知,文件存在,但似乎並沒有包括一些如何。如果我將類別文件重命名爲其他內容,我將收到'沒有這樣的文件'錯誤(文件不存在)。

與原來的代碼片段,我得到的錯誤是:

Notice: Undefined variable: categories 

但是你可以看到,它在categories.php文件中定義。

它的工作原理是將數組放在我的代碼的if(file_exists)部分,我不想這樣做,因爲其他部分依賴於這些categories.php文件,所以我不'我想要在多個文件中拷貝一個數組。

有沒有人有任何想法這可能是什麼?讓我知道你是否需要更多信息。

+2

如果你只是在沒有'file_exists'檢查的情況下'需要'文件會發生什麼?無論如何,這似乎更像你想要使用它的習慣。 – deceze

+0

從讀取文件發送輸出('config/categories.php');這裏。 – iiro

+2

基礎知識:_categories.php_是否以'<?php'開頭? – Wrikken

回答

5

你這裏有兩種選擇:

  • 使用include(dirname(__FILE__).'/config/categories.php')以確保您包括此相同的文件,而不是另一個人的config/categories.php「

  • 仔細檢查categories.php包括打開這樣的標籤<?php。看起來很明顯,但我在代碼評論中多次看到這一點。

希望這有助於!

+0

我已經完成了,它仍然不顯示。 – user1221488

2

如果運算符作用域,您只包含中的$類別,因此您不能在外部使用$類別。剛列入

使用include_once
$categories = null; 
if (file_exists('config/categories.php')) { 
    include ('config/categories.php'); 
} 

foreach ($categories as $cat_sef => $cat_name) { 
    echo '<a href="'.$full_domain.$cat_sef.'" alt="#">'.$cat_name.'</a><br />'; 
} 
+0

我用你的代碼替換了我的代碼,現在我得到了:警告:爲第21行的/home/u5249/httpdocs/php/display_category_list_in_sidebar.php中的foreach()提供的無效參數 – user1221488

+0

此代碼已經過測試。所以檢查這個: 1.文件categories.php開始於<?php 2. Codeblock if(file_exists('config/categories.php'))真正執行,以快速檢查這個使用'require'而不是'include' –

0

介紹$類別,如果你之前已經列入本文件。

+0

嘗試了這一點,我仍然得到與上面相同的錯誤。 – user1221488

2

file_existsinclude不以相同的方式查找文件。包括使用include_path選項並在不同目錄中搜索您的文件。

如果您確實想知道是否可以包含文件,您應該使用絕對路徑。

另一件事。如果您的foreach ($categories代碼位於函數內,則需要將$categories變量定義爲全局變量。因爲include總是在全局範圍內完成。

-1

如果您的文件存在,請檢查php.ini文件並設置。它可能有用。

相關問題