【问题标题】:How to correctly link files?如何正确链接文件?
【发布时间】:2011-12-19 19:00:56
【问题描述】:

根据我以前的经验,我几乎总是在将文件与我的网站项目链接时遇到问题。

例如,链接 CSS 样式、Javascript 文件以及在 PHP 中包含文件。问题是,在我的 PC 上,我的项目目录是 /www/project-name/,而当我将项目放在服务器上时,该目录将只是 /www/。当我将项目上传到服务器时,图像不显示,样式不工作,数据库连接未设置,功能未定义等......

所以我的问题是:链接/包含文件的最佳和最有效的方法是什么?

无论项目的目录是什么都可以工作,并且可能,如果我在file1.php 中包含project/includes/mysql.class.php,并且我将该文件移动到不同的目录,它仍然会正确包含project/includes/mysql.class.php

【问题讨论】:

标签: php html hyperlink include


【解决方案1】:

你应该使用相对路径。

不要指定完整路径('/www/project-name/includes/whatever.php'),而是使用相对于当前位置的路径:

'./includes/whatever.php'

【讨论】:

    【解决方案2】:

    您可以定义项目的文档根目录,然后根据它包含所有文件

    define(DOC_ROOT, realpath(direname(__FILE__)); 
    

    在你的前端控制器中,当你必须包含一个文件时

    include(DOC_ROOT . "/includes/file.php");
    

    所有框架都使用这种方法

    【讨论】:

    • 如果你把php文件放在一个文件夹里,DOC_ROOT会改变。我认为仅使用相对 url 没有任何优势。但是,您可以只使用 $_SERVER['DOCUMENT_ROOT']
    • 包含的文件并不总是在 $_SERVER['DOCUMENT_ROOT']
    【解决方案3】:

    我建议使用相对路径(例如 ../style.css 或 ../../style.css) ../ 引用当前文件的父目录。

    【讨论】:

      【解决方案4】:

      这就是我通常所做的。

      我在 html 中使用根相对 url(例如 src="/images/logo.jpg")。这样我就可以从一个页面复制 html 并将其粘贴到另一个页面中,而不必担心链接不起作用,因为其他页面位于文件夹中。

      我在 css 中使用相对 url,因为我在 css 中使用的所有资源,比如图像,都保存在与 css 文件相同的文件夹中(或它的子目录)。我主要这样做是因为它更短(url(img/background.jpg); vs. url(/css/img/background.jpg);)。小额外的好处是你可以复制 css 文件夹以在旧主题的基础上创建一个新主题,而无需更改 css 中的所有 url。

      在 PHP 中我使用include($_SERVER['DOCUMENT_ROOT'] . '/includes/mysql.php');。您可以将代码复制到另一个文件夹中的另一个文件中,它仍然可以工作。

      我很少需要硬编码路径的唯一一次是在 htaccess 中。

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 1970-01-01
        • 2021-05-05
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 2016-09-17
        • 2021-06-28
        • 2017-03-02
        相关资源
        最近更新 更多