为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法在不使用“../”的情况下将文件包含在多个目录中

有没有办法在不使用“../”的情况下将文件包含在多个目录中

PHP
泛舟湖上清波郎朗 2021-10-15 10:16:39
我有一个服务器,上面有几个目录。我有这个文件需要包含一个 php 文件 3 个目录。include "../../../folder/neededThis.php" 工作得很好,但如果你在不同的功能上做几次,计算一个文件有多少个目录就变成一件苦差事。有没有办法通过指定整个路径而不是使用“ ../”来包含文件例如。 include function(path/to/my/folder/neededThis.php);
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以使用,$_SERVER["DOCUMENT_ROOT"]因为这将始终返回您正在处理的任何内容的根文件夹。一个示例实现:


<?php

 $file = $_SERVER["DOCUMENT_ROOT"]."path/to/my/folder/needThis.php";

 echo "#LOC: ".$file; //output where is the file

 include $file; 

 #rest of code....

?>

它会返回这样的东西:


#LOC: server/path/to/my/folder/needThis.php

但是,如果您的文件被移动到服务器的子域,您需要调整受影响的文件,一种规避方法是使用 getcwd()


例如:如果您的文件被移动到子域(例如:)server/subb,上面的脚本将返回如下内容:


#LOC: server/path/to/my/folder/needThis.php

Warning: include(server/path/to/my/folder/needThis.php): failed to open stream: No such file or directory in server/subb/index.php on line 4

如果我们更换$_SERVER["DOCUMENT_ROOT"],getcwd()问题就不会发生。


采取预防措施,我不知道使用这种方法会有什么安全风险。


查看完整回答
反对 回复 2021-10-15
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信