使用绝对路径更容易修改包括将来的路径?

时间:2010-04-16 02:26:18

标签: php path include absolute

config.php放在根级别,此文件将包含在任何页面中。

然后在config.php

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

所以在来自不同sub / a.php,sub / sub / b.php目录的所有其他页面中,当我想在特定位置包含特定文件时,我只需要

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

在Windows服务器中,ROOT_DIR将值带到C:/inetpub/vhosts/domain.com

这是一种好/安全的方式吗?

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

有任何缺点吗?像SEO明智,或任何其他原因...... 你们的想法。

3 个答案:

答案 0 :(得分:2)

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

但是,此方法不允许您永远不会更改包含路径。您仍然需要更改config.php的包含路径,因为ROOT_DIR显然没有定义,直到包含它之后。

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

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

答案 1 :(得分:2)

我将评论您正在使用的方法(使用绝对路径)的一个优点是PHP不需要为每个请求解析路径。你可能会看到那种稍微好一点的表现。

此外,如果您使用的是PHP 5.3,则可以使用__DIR__代替dirname(__FILE__)

如果你没有使用5.3,你可以尝试一下。在5.3中对Windows平台进行了很多改进,更不用说许多新的有用的语言功能了。

答案 2 :(得分:0)

我建议使用vhosts ......

C:/ inetpub / vhost / account / html =指向=&gt; domain.com C:/的Inetpub /虚拟主机/帐户/ includeded_files

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