我的网络根文件夹/lang.php
上有一个文件,此文件有一个名为lang的类,此类包含一个名为inc:/inc/con.php
的文件夹中的文件。
我可以在root中的另一个文件中包含这个文件,但我有一个名为rep:rep/rep/rep.php
的子文件夹中的另一个文件,这个文件包含lang.php文件,然后打开它的lang类,这在尝试加入/inc/con.php
。
我尝试了很多方法,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()函数的工作方式相同?
答案 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?
我希望它有所帮助!