[英]PHP __DIR__ of file and backup by one directory
我正在使用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
任何想法为什么会发生这种情况? 提前谢谢了。
从realpath手册中:
realpath()扩展所有符号链接,并解析对输入路径中/./、/../和extra /字符的引用,并返回规范化的绝对路径名
因此,以下应该工作
require realpath(__DIR__."../bootstrap/autoload.php")
但是,这不是必需的,因为require可以自行解决相对路径。
由于您使用的是laravel,因此推荐的方法是:
require base_path("boostrap/autoload.php")
然而实际的建议方法是坐下来,不知道你为什么要做这个开始与因为如果你启动laravel正常应该做所有这些事情对你,你永远不应该需要做require
的任何东西。
根据我的评论;
__DIR__
是当前目录,如果要返回上一步,可以使用dirname
如:
dirname(__DIR__);
因此,如果您当前的目录是(并且您现在在哪里):
C:/服务器/htdocs/system/main/index.php
__DIR__
将给您C:/server/htdocs/system/main
, dirname(__DIR__)
将给您C:/server/htdocs/system/
因此,使用以下内容将满足您的需求;
require(dirname(__DIR__) . "/bootstrap/autoload.php");
首先, __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'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.