2010-04-16 58 views
1

config.php放在根目录下,这个文件将被包含在任何页面中。使用绝对路径更容易修改包含未来路径?

然后在config.php文件

<?php 
define('ROOT_DIR', dirname(__FILE__)); 
?> 

因此,在不同子/ a.php只会,次/分/ b.php目录中的所有其他网页,当我想在特定位置的特定文件,我只需要

include(ROOT_DIR.'/include/functions.php'); 

在Windows Server中,ROOT_DIR带来价值C:/inetpub/vhosts/domain.com

这是一个好/安全的方式?

似乎通过这种方式,当我将b.php移动到其他上层文件夹时,我不需要对包含文件路径进行任何更改,这对维护很有帮助。

任何缺点?像SEO明智,或任何其他原因... 你们想什么。

回答

2

我会评论说,您使用的方法(使用绝对路径)的一个优点是PHP不需要为每个请求解析路径。您可能会看到这样稍微好一些的表现。另外,如果您使用的是PHP 5.3,则可以使用__DIR__而不是dirname(__FILE__)

如果你不使用5.3,你可以给它一个镜头,如果可以的话。在5.3中对Windows平台进行了很多改进,更不用说许多新的有用的语言功能。

0

我建议使用虚拟主机作为这样...

C:/的Inetpub /虚拟主机/帐户/ HTML =点=> domain.com C:/的Inetpub /虚拟主机/帐户/ includeded_files

define('PATH_INCLUDE','C:/inetpub/vhost/account/included_files'); 
+0

included ** ed ** _files? – 2010-04-16 02:45:45

+0

@比利 - 谢谢...修正。 – 2010-04-16 13:34:34

2

我认为这样做是非常明智的,因为它显着增加了网站的可移植性。我不知道这对SEO有什么影响。

但是,这种方法不允许你改变你的包含路径。您仍然必须更改config.php的包含路径,因为ROOT_DIR在包含之后才明确未定义。

如果你想避免这样做,你应该使用$ _SERVER ['DOCUMENT_ROOT']来代替ROOT_DIR。这将返回相同的内容,并且它可用于所有脚本,可用于包括config.php以及所有其他包含内容。

或者,您可以edit the include path in php.ini。但是,这里假设:a)所有包含在同一个文件夹中,并且b)您可以在服务器上访问php.ini。