【问题标题】:PHP Relative paths like ASPPHP 相对路径,如 ASP
【发布时间】:2012-03-01 21:52:33
【问题描述】:

这行得通

<?php include("inc/c.php")?>

但在过去的文件夹中,这不起作用

<?php include("../inc/c.php")?>

我必须这样做

<?php include("/var/web/public_html/etc/inc/c.php")?>

我知道在 ASP 中您可以启用虚拟路径和目录。 PHP也是这样吗?

【问题讨论】:

    标签: php include relative-path


    【解决方案1】:

    如果您要包含文件夹中的文件,则所有包含都与包含器的文件相关。

    因此,相同的代码应该适用于子文件夹中的文件:

    <?php include("inc/c.php")?>
    

    【讨论】:

      【解决方案2】:

      您可以将目录添加到 PHP 的 include_path 目录。当您指定一个相对文件名时,PHP 将相对于include_path 中指定的所有目录查找该文件。

      看看http://php.net/manual/en/function.set-include-path.php#example-488

      【讨论】:

        【解决方案3】:

        使用

        dirname(__file__)
        

        它会返回当前目录的路径。

        【讨论】:

          【解决方案4】:

          您可以使用realpath(dirname(__FILE__)) 来包含相对于当前文件的文件:

          include(realpath(dirname(__FILE__).'/../inc/c.php')); 
          

          【讨论】:

            【解决方案5】:

            但在过去的文件夹中,这不起作用

            不,它确实有效。

            我知道在 ASP 中您可以启用虚拟路径和目录。 PHP也是这样吗?

            是的。但是整个虚拟路径的事情与您的情况无关。

            这不是 PHP 问题。这是使用错误路径的开发人员的问题。

            为了使您的代码万无一失,请始终使用绝对路径。不是从当前位置而是从站点根目录构建路径。因此,在您网站上的任何页面中都是一样的。
            最一般的方法是

            include $_SERVER['DOCUMENT_ROOT']."/etc/inc/c.php";
            

            【讨论】:

            • 我其实没有记下这个。尽管你一如既往地傲慢,但你是对的,这个错误是代码中的一个问题——路径存在,但其他 PHP 阻止了它。
            猜你喜欢
            • 2023-03-25
            • 2012-11-24
            • 2016-10-28
            • 2010-12-17
            • 1970-01-01
            • 2013-11-30
            • 2012-12-11
            • 2011-06-08
            • 1970-01-01
            相关资源
            最近更新 更多