如何要求第三方的index.php也需要东西

时间:2018-05-08 06:05:10

标签: php routing include require

我遇到了这个问题:

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

很抱歉,如果问题重复,暂时无法找到答案。

1 个答案:

答案 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.
?>