我遇到了这个问题:
在pseudoRoot/Dir/api/index.php
我有:
<php
require "SomeFolder/index.php";
?>
在pseudoRoot/Dir/api/SomeFolder/index.php
我有:
<php
require "SomeDeepFolder/someScript.php";
?>
其中pseudoRoot/Dir/api/SomeFolder/SomeDeepFolder/someScript.php
。
现在SomeFolder
中的所有内容都是一些我不想搞砸的第三方lib,而上面的SomeFolder/index.php
中有一些需求/包含。致电pseudoRoot/Dir/api/index.php
会导致错误failed to open stream: No such file or directory
。据我所知,这与PHP处理相对路径的奇怪方式有关(第二个require / include有第一个文件的相对路径而不是他自己的路径)但是如何让这种路由工作没有乱用lib的文件意味着没有触及.../SomeFolder
中的任何内容,只能使用.../api/index.php
?我尝试使用require dirname(__FILE__) . /SomeFolder/index.php
但没有成功。
啊,&#34;流程&#34;通过pseudoRoot/Dir/api/index.php
中的重写规则将所有请求路由到.htaccess
。
很抱歉,如果问题重复,暂时无法找到答案。
答案 0 :(得分:0)
如果您使用Composer,它将为您处理要求。
您也可以使用dirname(__FILE__)
代替__DIR__
。但它正在返回当前文件的目录。
只要添加的部分与当前目录相关,就可以使用__DIR__
。您也可以将此保存为$rootDirectory
一次,并使用此方法加载与此根目录相关的所有文件。
<?php
dirname(__DIR__, 1); // the extra parameter is for getting a level (or more) up from the current directory.
?>