【问题标题】:PHP Include behaving strangely?PHP Include 行为异常?
【发布时间】:2011-01-06 11:25:01
【问题描述】:

由于某种原因,如果我 inlcude() 文件结构中的文件更深到调用 include() 的文件所在的位置,则它可以工作文件,或者如果我包含同一级别的文件。

如果我尝试转到include('../backFile.php'),它会告诉我没有文件?

任何帮助:(

【问题讨论】:

    标签: php file include


    【解决方案1】:

    我不完全确定您的具体情况。可能有一个简单的修复方法可以使包含工作。该修复程序可能会在另一个答案中提供。

    相反,我将为您提供best-practice(嗯,也许不是“最好的”,但一种很好的做法):

    在您调用的第一个文件或配置文件中,定义一个常量,该常量是您的文件所在的第一个目录的路径。

    所以如果你在/home/user/domains/test.com/工作:

    DEFINE('SITE_PATH', '/home/user/domains/test.com/');
    

    然后,每当您包含某些内容时,就以它为起点

    include(SITE_PATH . "lib/test.class.php");
    

    这将确保PHP使用文件的完整路径,您不必担心相对包含文件。

    这在您更改文件位置时非常有用,因为您在移动包含所有内容的文件时不必更改包含。

    【讨论】:

      【解决方案2】:

      除了其他人所说的我realpath 一切......例如:

      include(realpath(dirname(__FILE__).'/../myFile.php'));

      【讨论】:

        【解决方案3】:

        你或许应该尝试基于当前目录:

        include(getcwd() . '../backFile.php');
        

        【讨论】:

          【解决方案4】:

          试试这个:

          include('./../backFile.php');
          

          【讨论】:

            【解决方案5】:

            include 依赖于 php 的 include_path 指令,默认为 .(当前执行脚本所在的目录)。

            使用ini_setset_include_path 设置您自己的include_path。

            【讨论】:

              【解决方案6】:

              当您在include 的参数中指定路径(绝对或相对)时,它不使用系统包含路径,而是解析路径相对于“主”文件 ,通常是某种index.php

              例如,您有三个文件,/www/index.php

              <?php
              include('libs/init.php');
              

              /www/test.php:

              I was included!    
              

              /www/libs/init.php:

              <?php
              include('../test.php');
              

              include('../test.php') 调用将使用index.php 的目录上下文(即/www)解析,因此您实际上是在尝试包含/test.php 而不是/www/test.php

              说实话,我不知道为什么会这样。我的libs/init.php 是这样解决的:

              define('DIR_ROOT', str_replace('\\', '/', dirname(dirname(__FILE__))));
              

              然后在所有路径前面加上它。 str_replace 调用是为了更顺畅地处理 Windows 路径。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-10-02
                • 2010-10-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-06-09
                相关资源
                最近更新 更多