【问题标题】:including files in php包括php中的文件
【发布时间】:2011-04-21 05:45:13
【问题描述】:

嗨,
我尝试通过终端运行文件,但收到类似“包含路径不正确”的错误
例如,我在以下文件夹中有一个“test.php”

/home/sekar/test/file.php  

在 php 文件中,我包含了一个文件“head.php”,该文件位于

/home/sekar/test/includes/head.php

head.php 包含一个名为 cls.php 的类文件,位于类文件夹中,

/home/sekar/test/classes/cls.php

我在终端尝试过这样,

php /home/sekar/test/file.php

为了更清楚地查看这三个文件的@内容,

文件.php

<?php 
include_once "./test/includes/head.php";
?>

head.php

<?php 
include_once "./test/classes/cls.php";
?>

cls.php

<?php 
echo "this is from cls file";
?>

谁能帮我解决这个问题?谢谢!

【问题讨论】:

    标签: php path include


    【解决方案1】:

    我认为include_once() 基本上将代码插入到您的文件中而不对其进行评估,因此路径是相对于 包括 文件的路径(file.php,而不是 head.php)。

    另外,我会对相对路径进行一些研究,因为您引用的是目录 /home/sekar/test/,而不是文件的路径。

    这可能有效:

    文件.php

    <?php 
    include_once "./includes/head.php";
    ?>
    

    head.php

    <?php 
    include_once "../classes/cls.php";
    ?>
    

    cls.php

    <?php 
    echo "this is from cls file";
    ?>
    

    【讨论】:

    • PHP 警告:include_once(./includes/head.php):无法打开流:第 2 行的 /home/sekar/test/file.php 中没有这样的文件或目录 PHP 警告:include_once (): 在第 2 行的 /home/sekar/test/file.php 中打开 './includes/head.php' 以包含 (include_path='.:/usr/share/pear') 失败
    • @Sekar - 你试过@Blender 给出的第二个例子吗?
    • 如果你没有第一个例子,我会投赞成票 - 它会混淆问题
    • 抱歉,我没有安装 PHP,所以无法创建示例。我已经编辑掉了不工作的代码。
    • 我只是尝试直接包含所有文件,它对我有用.. 谢谢 4 !!!
    【解决方案2】:

    PHP 包含相对于集合include_path,其第一个元素是. 或当前工作目录。当前工作目录不必与您的 PHP 文件所在的目录相同,也不必与您的主目录相同(您似乎在假设)。有两种方法可以解决您的问题。

    您可以通过将其添加到 file.php 的顶部来更改脚本的当前工作目录:

    chdir(dirname(__FILE__));
    

    或者,您可以将该目录添加到包含路径:

    set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
    

    【讨论】:

      【解决方案3】:

      只需按如下方式包含它

      file.php

      由于 file.php 和包含目录都在当前(相同)目录(测试)中,您可以按如下方式包含 head.php 文件

      <?php 
      include_once "includes/head.php";
      ?>
      

      在 head.php 中,head.php 和 cls.php 都出现在不同的目录中,您包含的文件如下。

      head.php

      <?php 
      include_once "../classes/cls.php";
      ?>
      

      当你使用../ 时,它会从当前目录出来,现在类和包含都出现在同一目录下,你现在可以包含路径classes/cls.php

      【讨论】:

      • Blender 给出了与您类似的答案,但为了您的清楚解释,我给出了 +1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多