繁体   English   中英

如何在我的 PHP 项目根目录之外链接 JS 外部文件?

[英]How do I link JS external files outside of my PHP project root directory?

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

/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 文件放在根目录中或上方的情况下执行此操作的任何建议?

JavaScript文件有,因为它们是由浏览器,而不是由服务器执行的是浏览器访问。

这要求他们有一个 URL。

将文件放在 webroot 下是给静态文件一个 URL 的标准方法。

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM