1

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 明智,或任何其他原因......你们怎么想。

4

3 回答 3

2

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

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

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

于 2010-04-16T03:10:49.883 回答
2

我认为这样做是非常可取的,因为它显着增加了您网站的可移植性。我看不出这会对 SEO 产生什么影响。

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

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

或者,您可以编辑 php.ini 中的包含路径。但是,这假设 a) 您的所有包含都在同一个文件夹中,并且 b) 您可以访问服务器上的 php.ini。

于 2010-04-16T02:36:57.617 回答
0

我建议使用虚拟主机......

C:/inetpub/vhost/account/html = 指向 => domain.com C:/inetpub/vhost/account/includeded_files

define('PATH_INCLUDE','C:/inetpub/vhost/account/included_files');
于 2010-04-16T02:35:48.143 回答