我正在使用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
任何想法为什么会发生这种情况?非常感谢提前。
答案 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'
。