PHP require文件的相对路径

时间:2014-07-15 08:50:05

标签: php

我一直在讨论这两个主题:

并且无法使我的脚本正常工作,所提供的方法都不起作用或者我做错了。

无论如何,这是我的问题出现的地方:

Root/                                   //this is root location for server
APP/                                    //this is root location for script
Root/APP/core/init.php                  //this is where I include classes and functions from
Root/APP/classes/some_class.php         //this is where all classes are
Root/APP/functions/some_function.php    //this is where all functions are

显然我需要在任何地方都包含init.php,所以我在每个文件中都这样做了:

require_once 'core/init.php';

它一直在工作,直到我决定为这样的管理文件创建一个位置:

Root/APP/Admin/some_admin_file.php

当我以这种方式包含init时:

require_once '../core/init.php';

脚本无法打开函数,APP/Core/文件夹中没有此类文件 所以我使用了上面主题中提到的DIR方法,甚至比发生的事情发生了,错误:

  

APP / Core / classes / Admin /

中没有这样的文件
那是什么? :D我迷失了,有人可以帮忙;)

1 个答案:

答案 0 :(得分:2)

包含路径相对于当前工作目录,可以使用getcwd()检查;当项目变大时,这可能是许多问题的根源。

要使包含路径更稳定,您应该使用__DIR____FILE__魔术常量;例如,在您的特定情况下:

require_once dirname(__DIR__) . '/core/init.php';

dirname(__DIR__)表达式实际上是当前正在运行的脚本的父目录。

顺便说一下,__DIR__也可以写成dirname(__FILE__)