2

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

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.php 中的数组替换为:

echo "testing";

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

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

Notice: Undefined variable: categories

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

它起作用的唯一方法是将数组代替我的代码的 if (file_exists) 部分,我不想这样做,因为其他部分依赖于该 categories.php 文件,所以我不想欺骗多个文件中的数组。

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

4

5 回答 5

5

你有两个选择:

  • 用于include(dirname(__FILE__).'/config/categories.php')确保您包含同一个文件而不是另一个“config/categories.php”

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

希望这可以帮助 !

于 2012-05-23T08:01:51.557 回答
2

您只是将 $categories 包含在if运算符范围内,因此您不能在外部使用 $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 />';
}
于 2012-05-23T08:07:37.943 回答
2

file_exists并且include不要以同样的方式寻找文件。包括使用该include_path选项并在不同目录中搜索您的文件。

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

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

于 2012-05-23T08:15:26.287 回答
0

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

于 2012-05-23T08:13:45.633 回答
-1

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

于 2017-03-15T16:01:57.653 回答