【问题标题】:How do I link JS external files outside of my PHP project root directory?如何在我的 PHP 项目根目录之外链接 JS 外部文件?
【发布时间】:2014-04-04 11:14:46
【问题描述】:

在我的网站上,我的资源文件夹位于根目录之外,例如:

/var/www/html/是根目录

/var/www/resources/

我目前有一个配置文件来设置库的位置,因此我可以将它包含在 php 中,如下所示:

defined("LIBRARY_PATH")  

or 

define("LIBRARY_PATH", realpath(dirname(__FILE__) . '/library'));

当我使用时效果很好:

<?php include_once(LIBRARY_PATH . "/file.php"); ?>

但在尝试添加 Javascript 文件时不起作用:

例如

<script src="../resources/library/js/test.js"></script>

链接到“www.website.com/resources/library/js/common.js” 或

<script src="<?php echo LIBRARY_PATH; ?>/js/test.js"></script>

指向“www.website.com/var/www/resources/library/js/test.js”的链接

两者都不起作用。

关于如何在不将 js 文件放在根目录或根目录之上的情况下如何做到这一点的任何建议?

【问题讨论】:

  • 您的问题帖子似乎已损坏。要根据它的可见部分回答您的问题:如果 /var/www/html 是您的根目录,则您必须在该目录中的某个位置拥有 js。问题是:浏览器必须能够访问 te 文件。 /var/www/html 之外的任何内容都无法访问。高兴吧。

标签: javascript php jquery include root


【解决方案1】:

您的 JavaScript 文件必须可供浏览器访问,因为它们是由浏览器而不是服务器执行

这要求他们有一个 URL。

将文件放在 webroot 下是为静态文件提供 URL 的标准方法。

或者,您可以编写一个程序(例如在 PHP 中)来读取文件,然后将其内容输出到浏览器。这更复杂,并且使处理缓存控制标头更加繁琐,不推荐使用。

【讨论】:

    【解决方案2】:

    假设您了解自己在做什么以及这对安全的影响!..

    您创建的 linkjs.php 脚本将脚本的相对路径(来自某个根目录,可能是 /var/www/resource/js)作为参数,例如:

    <script src="/linkjs.php?p=test.js">
    

    在您的 PHP 脚本中,您解析完整的文件路径,检查它确实是根目录下的文件(以防止参数中的 ../),您的 PHP 用户可以读取它,读取内容并输出它进入响应。当然不要忘记将内容类型设置为 text/javascript。

    理想情况下,您还应该根据源文件修改时间提供适当的缓存标头,但这本身就是一个主题。有关动态内容的正确缓存标头,请参阅其他 SO 问题中的指南。

    好处是,如果您喜欢/需要,您可以即时执行脚本缩小/组合/包装/替换。

    【讨论】:

      猜你喜欢
      • 2018-02-21
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2017-09-28
      • 2020-12-29
      相关资源
      最近更新 更多