PHP相对路径,如ASP


PHP Relative paths like ASP

这适用于

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

但在一个超过这个的文件夹中,这是不起作用的

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

我必须做

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

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

如果包含文件夹中的文件,则所有include都是相对于includer的文件的。

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

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

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

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

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

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

使用

dirname(__file__)

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

但在一个超过这个的文件夹中,这是不起作用的

不,它确实有效。

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

是的。但整个虚拟路径的事情和你的情况无关。

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

要使您的代码不易出错,请始终使用绝对路径。不是从当前位置而是从站点根目录生成路径。所以,在你的网站上的任何页面上都是一样的
最通用的方法是

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