繁体   English   中英

PHP __DIR__文件并通过一个目录备份

[英]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/maindirname(__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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM