带有" PHP"的PHP目录/文件层次结构和(dirname(__ FILE__)。' SOMETHING')

时间:2015-07-31 10:57:23

标签: php include dirname

感谢您的时间和精力。

我正在使用一个php网站,我想在其中整合我在网上找到的没有mySql数据库的留言簿。

我的网站结构如下:

host.../myDir/fileA.php (here we have all the basic files of the site)

我要整合的留言簿第一个文件位于:

host.../myDir/gbook/gbook.php 

在gbook目录下,还有另一个名为模板的目录,其中包含图形所需的一切(显而易见)。

在fileA.php中我插入了这个include命令:

require_once "gbook/gbook.php";

在gbook / gbook.php里面有这个命令:

$settings['tpl_path'] = './templates/'.$settings['template'].'/';

现在我已经阅读了php指南(包括(dirname( FILE )。' ...')并且我已经阅读了你的多个关于这个命令的解释,所以我对此进行了测试:

 $settingsBase['tpl_basepath'] = (dirname(__FILE__) . '/');
 $settings['tpl_path'] =  $settingsBase['tpl_basepath'].'templates/'.$settings['template'].'/';

但它适用于集成,但不适用于图形。 所以这就是我不理解的东西和我所理解的东西。

当你"包括"在另一个文件中的文件中,编译器读取代码,因为它是同一文件的一部分。 这就是问题所在。当你包含位于另一个/ dir中的东西时,编译器会得到文件,但不是整个结构,所以如果有另一个" include"在包含文件内部,编译器将在/ dir里面找到包含文件的位置。正确的吗?

那么dirname()命令存在吗? 我的意思是使用dirname()来告诉编译器我想要包含这个文件/dir/file.php以及之后的所有内容并且包含在第一个文件中的内容应该保持相同/是正确的dir结构?

如果有这样的结构:

host.../myDir/fileA.php

并且此文件包含命令:

include gbook/fileB.php

并且此文件包含命令:

include /template/all_the_other_files.php

,完整的结构是:

(1) host...  
   (2) /myDir (where_there's_site)
      (3) /gbook (where_there's_base_gbook_structure)
         (4) /template (where_there's_template)
            (5) /others dir (where_there's_pics_smiles_etc...)

如果你包括gbook / gbook.php"我怎么能告诉编辑人员?一切都包含在gbook.php里面必须在主机内找到... / myDir / gbook /...?

我知道这可能对你来说非常简单,但我试图克服这个问题,而且我无法理解问题的基本解决方案和解释。

THX。

1 个答案:

答案 0 :(得分:0)

首先,我建议使用 require_once 而不是 include 。如果找不到所需的文件,则会引发错误,并且您不需要关心多个包含。

我认为你只需要在你的gbook / fileB.php中使用它:

require_once __DIR__ . /template/all_the_other_files.php;

如您所见,您可以在较新的PHP版本中使用DIR魔术常量而不是dirname(FILE)。使用它,你可以很容易地实现相对路径的包含。希望有所帮助。