每当我想用PHP包含文档,或者执行需要描述路径的任何其他PHP动作时,我都需要编写类似../../../../../document.html
的内容。这是有效的,但它很乏味,在某些情况下,路径是错误的,导致代码出现在页面上,并进行调试。
显然,这可以通过使用$SERVER_['DOCUMENT_ROOT']
命令来绕过,但是,这也需要有时无法管理的代码量(同样,当存在许多路径时)。
有没有办法简单地将站点范围内的所有PHP路径定义为文档根目录相对,如在HTML中(/document.html
是根相对的)?
答案 0 :(得分:1)
我在另一个问题上有详细解答:
finding a file in php that is 4 directories up
它解释了PHP中相对文件路径的注意事项。使用那里提到的magic constants and server variables
来克服相对路径问题。
答案 1 :(得分:1)
是。大多数有经验的开发人员倾向于在配置文件中为应用程序重要的各种路径定义常量。如果你想将webserver文档根目录定义为你的应用程序根目录,也许还有另外一条路径可以在你放置应用程序包含(类等等)的web服务器目录中使用另外一条路径:你想要在网络中公开。目录
define('WEB_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('INCLUDE_DIR', '/path/to/directory/');
然后,您可以在应用程序中引用这些常量。
我肯定会建议远离相对路径,因为在重构代码或将代码从一台服务器移动到另一台服务器时它们会出现问题。如果您需要相对类型的路径(例如,对于应用程序可移植性),可以使用__FILE__
和__DIR__
等PHP魔术常量来提供更好的服务。
答案 2 :(得分:0)
我曾经这样做并且遇到了这些问题。然后我切换我的网站使用mod_rewrite
作为网址。然后我将所有的php页面都放在同一个目录中,这样我就不必在目录结构中进行4次混乱以找到根目录。您可以在服务器上找到一个php文件:
/var/www/index.php
并且,在.htaccess文件中使用mod_rewrite,您可以将该地图设置为:
http://domain.com/really/long/path/structure/page.html
当我转移到那个结构时,它真的帮助我在PHP方面特别关于导航到不同目录的事情。