包含的PHP文件的相对路径


Relative paths for included PHP files

我有一个PHP项目,目录结构如下:

ROOT
    - PUBLIC
        - CSS
        - JS
    - LIB
        - CONTROLLER

所有的基本PHP页面都位于PUBLIC文件夹下,而所有的控制器、模型等都位于LIB或CONTROLLER文件夹下。在某些情况下,在控制器完成处理后,它将包含PUBLIC文件夹中的一个文件以进行显示。我注意到,包含的文件找不到相关的CSS或JS文件,因为它现在使用的是/LIB/CONTROLLER的相对路径。

我的问题:

  1. 有没有办法为包含的文件设置一个不同的相对路径,而不必修改每一个CSS或JS包含行?

  2. 如果我使用header (Location...)转发控件,则不会出现此问题,但在某些情况下,我宁愿不这样做,只包含页面,因为我将不得不使用SESSION将重对象从控制器传递到页面。有没有更好的方法来实现这一点?

正如@Jack T所回答的那样,这个问题的解决方案是在包含的PHP/HTML页面中定义<base>元素。我学到的一件事是,在定义元素时使用完整的URL,包括http://

这解决了我面临的问题

在所有php文件上使用类似的东西:

if(未定义PATH_TO_ROOT)define PATH_TO_ROOT='.'

所以,在你的链接和其他东西中,总是用这个常量制作url,比如:

url=PATH_TO_ROOT.'/public/css/mycss.css';

**请注意,这只是一个伪代码,而不是实际的PHP代码。

/use/absolute/paths/everywhere/on/your/site

do/not/use/relater/ones
^请参阅,没有/slash,这不是好的做法。