PHP __DIR__文件和备份由一个目录

时间:2018-05-10 16:11:24

标签: php

我正在使用PHP 7运行laravel服务器。我正在尝试使用以下文件:

require __DIR__.'/../bootstrap/autoload.php';

我运行此脚本的文件位于名为public的文件夹中。因此__DIR__应该等于:

www.mydomain.com/myserver/public/index.php

脚本应该创建的路径应该是:

www.mydomain.com/myserver/bootstrap/autoload.php

但是,不是动态创建正确的路径,而是将“/../”视为文字目录,而不是告诉它返回一个。所以我回来的路是:

www.mydomain.com/myserver/public/../bootstrap/autoload.php

任何想法为什么会发生这种情况?非常感谢提前。

2 个答案:

答案 0 :(得分:2)

根据我的评论;

docker run -eENV_VARIABLE_NAME=value hello-world 是您当前的目录,如果您想返回一步,可以使用__DIR__

这是用来的;

dirname

因此,如果你当前的目录是(并且你是主动的目的地):

  

C:/server/htdocs/system/main/index.php

dirname(__DIR__); 会给你__DIR__C:/server/htdocs/system/main会给dirname(__DIR__)

因此,使用以下内容将满足您的需求;

C:/server/htdocs/system/

答案 1 :(得分:1)

首先,__DIR__指的是磁盘上的目录,而不是URL,而不是文件。所以这句话是错误的:

  

我运行此脚本的文件位于名为public的文件夹中。因此__DIR__应该相等:   www.mydomain.com/myserver/public/index.php

__DIR__类似于Linux系统上的'/var/www/mydomain-com/public',或类似于Windows系统上的'C:\wamp\mydomain-com\public'

因此,您拥有的代码将生成类似'/var/www/mydomain-com/public/../bootstrap/autoload.php'的字符串。至少在Linux和类似系统上,此路径与/var/www/mydomain-com/public/autoload.php是等效的,因此您的代码应该正常工作,并且是编写此代码的正常方式

如果您确实要生成字符串'/var/www/mydomain-com/public/autoload.php',则可以使用其他答案中指示的dirname(__DIR__)。这会删除路径中的最后一个部分,因此为您提供(使用上面的虚构路径)'/var/www/mydomain-com'