首页 > 解决方案 > PHP __DIR__ 文件并按一个目录备份

问题描述

我正在使用 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

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

标签: php

解决方案


从手册realpath

realpath() 扩展所有符号链接并解析输入路径中对 /./、/../ 和额外 / 字符的引用,并返回规范化的绝对​​路径名

因此以下应该工作

require realpath(__DIR__."../bootstrap/autoload.php")

但是,这不是必需的,因为 require 可以自己解析相对路径。

由于您使用的是 laravel,因此推荐的方法是:

require base_path("boostrap/autoload.php")

然而,实际推荐的方法是坐下来思考为什么你需要这样做,因为如果你正确启动 laravel,它应该为你做所有这些事情,你永远不需要做require任何事情。


推荐阅读