【问题标题】:Use absolute path for easier modify include path in future?使用绝对路径以便将来更轻松地修改包含路径?
【发布时间】:2011-02-08 15:53:22
【问题描述】:

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

【问题讨论】:

    标签: php path include absolute


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2012-01-31
          • 2014-05-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多