是否有任何方法可以在根部层次中制作所有PHP路径



每当我想将文档包含在PHP上,或执行需要描述路径的任何其他PHP操作时,我需要写类似../../../../../document.html的内容。这起作用,但这很乏味,在某些情况下,路径是错误的,导致页面上显示的代码和调试。
显然,这可以通过使用$SERVER_['DOCUMENT_ROOT']命令绕过,但这也需要有时不可控制的代码(同样,当存在许多路径时)。

是否有任何方法可以简单地将所有PHP路径定义为文档root-Relative,例如HTML(/document.html是root相对)?

我在另一个问题中对此有

在PHP中找到一个文件,即4个目录

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

是。大多数经验丰富的开发人员倾向于在配置文件中定义对应用程序很重要的各种路径的常数。因此,如果您想将WebServer文档root定义为您的应用程序root,也许是这样的事情,并且也许还有另一条路径Otuside the Web服务器目录在其中放置应用程序包含(类等),您不希望在Web中展示目录。

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

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

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

我曾经这样做并遇到这些问题。然后,我将网站切换为将mod_rewrite用于URL。然后,我将所有的PHP页面都放在同一目录中,因此我不必在目录结构上四次混淆即可找到根。您可以在服务器上有一个PHP文件:

/var/www/index.php

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

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

当我移至该结构时,它确实在专门导航到不同目录方面的PHP方面确实有帮助。

最新更新