PHP按相对路径包含文件

PHP按相对路径包含文件,php,path,include,Php,Path,Include,此绝对路径成功包含我的文件httpapi.inc.php: require_once'/home/devel/wwwroot/nm/dev/http-api/http-api/src/httpapi.inc.php' 调用文件是: 呼叫者亲属: /devel/phi/dev/appcenter-head/appcenter/application/nm/index.php 来电者位置: /home/devel/wwwroot/phi/dev/appcenter-head/appcenter/ap

此绝对路径成功包含我的文件
httpapi.inc.php

require_once'/home/devel/wwwroot/nm/dev/http-api/http-api/src/httpapi.inc.php'

调用文件是:

呼叫者亲属:

/devel/phi/dev/appcenter-head/appcenter/application/nm/index.php

来电者位置:

/home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm

现在,我如何基于相对路径包括相同的文件,如:

/devel/nm/dev/http-api/http-api/index.php

我必须按“原样”使用此路径,因为它是用户传递的配置选项。

require()
include()
应相对于已配置和当前执行的脚本进行操作。因此,这应该是可行的:

 include "src/httpapi.inc.php";
require_once('src/httpapi.inc.php');
不过,准确地说,当前脚本的直接工作实际上被指定为默认配置中的一个include路径。如果你把它弄糟了,它就不会起作用

使用。在include路径中,允许按其含义进行相对包含 当前目录


关于您的最新编辑,您的路径非常不同,只需使用完整路径或将
/home/devel/wwwroot/nm/dev/http-api/http-api/
添加到您的配置中,并使用
require\u once('src/httpapi.inc.php')
您可以使用$\u服务器变量中的文档根:


可能重复的忘记添加呼叫脚本所在的位置,请查看我的编辑。谢谢。我怎样才能得到完整的路径?我所有使用
realpath
的尝试都失败了。我不明白这个问题。你知道路。只需使用它和/或将部分但绝对的路径作为包含路径的一部分放入您的配置中。是的,我现在知道我自己的系统上的完整路径,但是如果我安装在其他地方,我需要一个通过此相对路径提供完整路径的功能。是的。。。我一直在努力理解你所呈现的情景,每次我读到它时,我都会对你想要实现的目标更加困惑。如果您允许用户(可能是受信任的开发人员)提交文件路径以包含在处理过程中,那么他们需要提供相对于某个公共根的路径,如
/home/devel/
。然后,选择它们的路径并将它们连接起来<代码>需要一次('/home/devel/'.$dev_script)
。不要试图创造奇迹来授予开发人员指定没有共同点的路径的能力。这会失败,并出现致命错误:
Failed opening required'/opt/nm/appcenter40-server-php53/htdocs/nm/dev/http api/http api/src/httpapi.inc.php'
require_once $_SERVER['DOCUMENT_ROOT'] . '/nm/dev/http-api/http-api/src/httpapi.inc.php';