我在项目上做了很多重构,所以它实际上可以有开发分支。现在,所有包含都是硬编码的,而且非常混乱。很多包含将指向同一个文件,但是包含的内容与每个文件看起来非常不同(并且必要时,对于开发站点必须是不同的,并且暂时将相同文件复制到不同的目录) 。
我已经查看了这个答案:StackOverflow: Path of current PHP script relative to document root并尝试实施
getpath.php with
<?php
define("DIR_BASE", dirname( __FILE__)."/");
define("SERV_CONFIGS", DIR_BASE."server/specific/config.php");
给我一个不错的起点,可以适应整体位置(以及一些环境特定的位置变量),这样我就可以改变每个实例
include ("../../../include/foo.bar");
include ("http://example.com/something/else.php");
include ("../../../server/specific/config.php");
和
include ("../include/foo.bar");
include ("../something/else.php");
include ("http://server/specific/config.php");
和
include ("http://example.com/include/foo.bar");
include ("/something/else.php");
include ("/server/specific/config.php");
等。全部进入
include (DIR_BASE . "include/foo.bar");
include (DIR_BASE . "something/else.php");
include (SERV_CONFIGS);
这样,我可以将这两行复制粘贴到数百个文件中并完成。 (它不仅仅是三个文件名)。
然而,我突然意识到每个页面仍然需要有一点&#34;独特的雪花&#34;包括我的getpath.php,每个指向该单个文件的getpath.php都包含它。
如何在不使每个页面都有自己的雪花版include(&#34; getpath.php&#34;)的情况下包含getpath.php?
答案 0 :(得分:1)
您可以在任何需要包含getpath.php的文件中使用$ _SERVER ['DOCUMENT_ROOT']:
include $_SERVER['DOCUMENT_ROOT'] . '/path/to/getpath.php';
这可以避免为不同文件编写特定路径,例如:
include '../../../../../getpath.php';