【问题标题】:File_exists but won't includeFile_exists 但不包括
【发布时间】:2012-05-23 07:52:18
【问题描述】:

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

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

echo "testing";

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

使用原始代码sn-p,我得到的错误是:

Notice: Undefined variable: categories

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

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

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

【问题讨论】:

  • 如果你只是 require 文件而不检查 file_exists 会发生什么?无论如何,这似乎更符合您的使用习惯。
  • 从你的 readfile('config/categories.php') 发送输出;在这里。
  • 基础知识:categories.php 是否以&lt;?php 开头?
  • 尝试 print_r(get_included_files()); ?> 包含后。该文件应该出现在该数组中
  • 在“config/categories.php”的顶部放一些文本,html;它呈现?

标签: php


【解决方案1】:

你有两个选择:

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

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

希望这会有所帮助!

【讨论】:

    【解决方案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 />';
    }
    

    【讨论】:

    • 我用你的代码替换了我的代码,现在我得到:警告:第 21 行 /home/u5249/httpdocs/php/display_category_list_in_sidebar.php 中的 foreach() 提供的参数无效
    • 此代码已经过测试。所以检查一下: 1. 文件 categories.php 以
    【解决方案3】:

    file_existsinclude 查找文件的方式不同。包括使用include_path 选项并在不同目录中搜索您的文件。

    如果你真的想知道一个文件是否可以被包含,你应该使用绝对路径。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-04
          • 2014-12-22
          • 1970-01-01
          • 1970-01-01
          • 2020-09-15
          • 1970-01-01
          • 2018-06-30
          • 1970-01-01
          相关资源
          最近更新 更多