File_exists但不包括

时间:2012-05-23 07:52:19

标签: php

我正在尝试包含一个文件,但它似乎不起作用 - 这是整个代码:

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 />';
}

config / 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";
}

但是如果我用categories:

替换categories.php中的数组
echo "testing";

也不显示任何内容。因此,据我所知,该文件存在但似乎并没有包括一些如何。如果我将类别文件重命名为其他内容,我将收到“无此文件”错误(文件不存在)。

使用原始代码段,我得到的错误是:

Notice: Undefined variable: categories

但正如您所看到的,它在categories.php文件中定义。

它唯一的工作方式是将数组放在我的代码的if(file_exists)部分的位置,我不想这样做,因为其他部分依赖于那些categories.php文件,所以我不这样做想要在多个文件中欺骗数组。

有谁知道这可能是什么?如果您需要更多信息,请与我们联系。

5 个答案:

答案 0 :(得分:5)

这里有两个选项:

  • 使用include(dirname(__FILE__).'/config/categories.php')确保您包含此文件,而不是其他'config / categories.php'

  • 仔细检查categories.php是否包含像<?php那样打开php标签。看起来显而易见,但我在代码审查中不止一次地看到过这一点。

希望这有帮助!

答案 1 :(得分:2)

您刚刚在 if 运营商范围内添加了$ category,因此您无法在外部使用$ 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 />';
}

答案 2 :(得分:2)

file_existsinclude不会以相同的方式查找文件。 include使用include_path选项并在differents目录中搜索您的文件。

如果您真的想知道是否可以包含文件,则应使用绝对路径。

另一件事。如果您的foreach ($categories代码位于函数内,则需要将$categories变量定义为全局变量。因为include总是在全局上下文中完成。

答案 3 :(得分:0)

如果您之前已经包含此文件,请使用include_once

答案 4 :(得分:-1)

如果您的文件存在,请检查php.ini文件并设置short_tag_open=on。它可能有用。