2012-05-23 3 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"; 
} 

Однако если заменить массив в ок tegories.php с указанием:

echo "testing"; 

Ничего не покажет. Итак, насколько я вижу, файл существует, но, похоже, он не включает некоторые способы. Если я переименую файл категорий в другое, я получу ошибку «нет такого файла» (файл не существует).

С исходного фрагмента кода, ошибка я получаю:

Notice: Undefined variable: categories 

Но, как вы можете видеть, это определено в файле categories.php.

ЕДИНСТВЕННЫЙ способ, которым это работает, состоит в том, чтобы поместить массив вместо части кода if (file_exists), которую я не хочу делать, потому что другие части полагаются на этот файл категорий.php, t хотите обмануть массив в нескольких файлах.

Кто-нибудь знает, что это может быть? Дайте мне знать, если вам нужна дополнительная информация.

+2

Что происходит, если вы просто «требуете» файл без проверки «file_exists»? Казалось бы, это более идиоматично для того, как вы хотите использовать его в любом случае. – deceze

+0

Отправлять вывод из файла readfile ('config/categories.php'); Вот. – iiro

+2

Основы: _categories.php_ начинаются с ' Wrikken

ответ

5

У вас есть два варианта здесь:

  • использование include(dirname(__FILE__).'/config/categories.php'), чтобы убедиться, что вы в том числе тот же самый файл, а не другой «конфигурации/categories.php»

  • двойной проверки, что включает в себя categories.php открытие php-тэгов вроде этого <?php. Кажется очевидным, но я видел это более одного раза в обзорах кода.

Надеюсь, это поможет!

+0

Я сделал оба, и он все еще не отображается. – user1221488

2

Вы только что включили $ categories внутри , если область действия оператора, поэтому вы не можете использовать $ categories вне. Просто ввести $ категории до включения

$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

Я заменил свой код на ваш, и теперь я получаю: Предупреждение: неверный аргумент для foreach() в /home/u5249/httpdocs/php/display_category_list_in_sidebar.php в строке 21 – user1221488

+0

Этот код был протестирован. Поэтому проверьте это: 1. file categories.php начинается с

0

использования include_once если вы уже включили этот файл раньше.

+0

Пробовал это, и я по-прежнему получаю те же ошибки, что и выше. – user1221488

2

file_exists и include не ищут файл таким же образом. используйте опцию include_path и выполните поиск файла в каталоге differents.

Если вы действительно хотите знать, может ли файл быть включен, вы должны использовать абсолютный путь.

Другое. Если ваш код foreach ($categories находится внутри функции, вам необходимо определить переменную $categories как глобальную. Потому что include всегда выполняются в глобальном контексте.

-1

Если ваш файл существует, пожалуйста, проверьте файл php.ini и установите . Он может работать.

Смежные вопросы