PHP包含和子文件夹

时间:2010-03-05 16:00:53

标签: php include

我创建了一个使用PHP包含的应用程序,如果您不介意将PHP包含文件放在与其他文件相同的位置,那么该应用程序非常有用。但我想尽可能整齐地分割我的代码。请参阅以下文件结构:

http://beginsathome.org.uk/BAAF/images/file_system.png

尽可能地,我希望所有?.php文件都在文档根目录中,并且所有与php相关的包含文件(例如数据库连接详细信息)都位于“inc”文件夹中。

对于html和相应的css,图像等,我创建了一个'templates'文件夹来保存所有细节,其中包含一个名为'includes'的子文件夹,它将保存html包括诸如页眉,页脚等。

不幸的是,即使我的图片和CSS与我的html模板位于同一个地方,但在查看网站时似乎没有显示css和图像(尽管页眉/页脚的文本部分也是如此)。

http://www.beginsathome.org.uk/BAAF/images/screenshot.png

我一直在努力做一些研究并明白使用像

这样的东西

$path = $_SERVER['DOCUMENT_ROOT'];
   $path .= "/common/header.php";
   include_once($path);

可能是一种前进的方式,但我是PHP新手,不知道在哪里放置它,或指定哪条路线。我也明白这个方法可以根据它是在apache,linux还是windows服务器上而有所不同。理想情况下,我希望该方法适用于所有服务器。我目前正在使用mac上的本地apache服务器进行开发。

非常感谢你的帮助 颖

4 个答案:

答案 0 :(得分:2)

假设您的PHP个文件正在调用模板,那么该文件的实际文档根目录是包含,而不是HTML文件根目录。

因此,您需要遍历CSS目录:../templates/css/FILE.css

答案 1 :(得分:1)

不,$_SERVER['DOCUMENT_ROOT']独立于操作系统或Web服务器,如果设置正确(通常是这样)。从 filesystem 根开始,此方法是创建绝对路径的最佳方法之一。

然后你的浏览器会请求一个CSS文件。它不是从服务器的文件系统请求它,而是从虚拟Web服务器请求它。您对cSS文件所需要的只是从服务器根目录设置其路径,使其成为绝对路径(即“可从每个地方访问”)。绝对路径始终从/符号开始。

所以,根据你的照片,/templates/css/baaf.css可以。

答案 2 :(得分:0)

尝试使用路径中的../首先从当前目录移出。

答案 3 :(得分:0)

如果我建议您将dir结构改为:

  • 文档根
    • CSS
    • 图像
    • 的javascript

对于您的doc root,然后确保将php_include_path设置为:

  • 包括
    • 模板
    • _notes
    • 等。等

应该让事情变得更容易组织