0

每当我想在 PHP 中包含一个文档,或执行任何其他需要描述路径的 PHP 操作时,我都需要编写类似../../../../../document.html. 这可行,但很乏味,而且在某些情况下,路径错误,导致代码出现在页面上,并进行调试。
显然,这可以通过使用$SERVER_['DOCUMENT_ROOT']命令绕过,但这也需要有时无法管理的代码量(同样,当存在很多很多路径时)。
有什么方法可以简单地将站点范围内的所有 PHP 路径定义为文档根相关,如 HTML 中(/document.html是根相对)?

4

3 回答 3

1

我在另一个问题中对此有详细的回答:

在php中找到一个4个目录的文件

它解释了 PHP 中相对文件路径的注意事项。使用magic constants and server variables那里提到的克服相对路径问题。

于 2012-11-02T17:01:55.807 回答
1

是的。大多数有经验的开发人员倾向于在配置文件中为对应用程序重要的各种路径定义常量。因此,如果您想将网络服务器文档根定义为应用程序根,并且可能在您放置应用程序包含(类等)的网络服务器目录之外有另一个路径,则可能是这样的;不想在网络中公开目录。

define('WEB_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('INCLUDE_DIR', '/path/to/directory/');

然后,您可以在应用程序中引用这些常量。

我当然建议不要使用相对路径,因为它们在重构代码或将代码从一台服务器移动到另一台服务器时会出现问题。如果您需要相对类型的路径(例如,为了应用程序的可移植性),您可能会更好地使用 PHP 魔术常量,如__FILE____DIR__

于 2012-11-02T17:08:05.860 回答
0

我曾经这样做并且有这些问题。然后我将我的网站切换mod_rewrite为用于网址。然后,我将所有 php 页面都放在同一个目录中,这样我就不必在目录结构上进行 4 次令人困惑的查找来查找根目录。你可以在你的服务器上有一个 php 文件:

/var/www/index.php

并且,在您的 .htaccess 文件中使用 mod_rewrite,您可以将该映射映射到:

http://domain.com/really/long/path/structure/page.html

当我移至该结构时,它确实在 php 方面帮助了我,特别是关于导航到不同的目录。

于 2012-11-02T17:03:28.817 回答