如何检查文件是否与require()函数的工作方式相同?

时间:2017-05-22 21:40:12

标签: php require file-exists

我的网络根文件夹/lang.php上有一个文件,此文件有一个名为lang的类,此类包含一个名为inc:/inc/con.php的文件夹中的文件。

我可以在root中的另一个文件中包含这个文件,但我有一个名为rep:rep/rep/rep.php的子文件夹中的另一个文件,这个文件包含lang.php文件,然后打开它的lang类,这在尝试加入/inc/con.php

enter image description here

我尝试了很多方法,rep/rep/rep.php似乎/lang.php/inc/con.php上包含课程时使用了当前位置,因此,当lang.php包含rep/rep/rep.php时,它可以&#39 ;找到文件夹。

我在include(__DIR__."inc/con.php"); // fails include(__DIR__."../inc/con.php"); // works require(__DIR__."../inc/con.php"); // fails require(__DIR__."../../inc/con.php"); // works require("../inc/con.php"); // fails require("../../inc/con.php"); // works 包含的lang.php中的lang类中进行了这些include / require尝试:

/lang.php

第二个有效,我不知道为什么,但如果我改变了#34;包括"要求"要求"它失败了!

我从lang类(位于rep/rep/rep.php中(仍然包含在echo \__DIR__; // returns "/var/www/html/" 中)中创建了一些回声,得到了这些结果:

echo require(__DIR__."../../inc/con.php");
echo implode(',<br>',get_included_files ());
// returns "/var/www/html/inc/con.php"

所以,这是当前的位置,这是正确的

if(file_exists(__DIR__."../../inc/con.php")) echo "exists";
else echo "not exists";
// returns "not exists"

所以,这是文件的绝对位置

if(file_exists("../inc/con.php")) echo "exists";
else echo "not exists";
// returns "exists"

此文件不存在,但我可以包含它!

if(file_exists("../inc/cnxf.php"))  require("../inc/cnxf.php");

我不能包括它,但它存在!

看起来像file_exists()函数说文件位于&#34; ../ inc / con.php&#34;,但要包含它我需要使用这个&#34; ../../ inc /con.php"

接下来失败了:

{{1}}

如何检查文件是否与require()函数的工作方式相同?

1 个答案:

答案 0 :(得分:0)

好的,我使用绝对路径解决了问题:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);
if(file_exists("$root/inc/con.php"))
require("$root/inc/con.php");

@Peter Coulton发布于How to include PHP files that require an absolute path?

我希望它有所帮助!