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

时间:2014-04-04 11:14:46

标签: javascript php jquery include root

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

  

/var/www/html/是根目录

     

/var/www/resources/

我目前有一个配置文件来设置库的位置,所以我可以像这样包含它:

defined("LIBRARY_PATH")  

or 

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

在我使用时效果很好:

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

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

e.g。

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

指向&#39; www.website.com/resources/library/js/common.js' 或

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

指向&#39; www.website.com/var/www/resources/library/js/test.js'

两者都不起作用。

关于如何在没有根文件中或上方的js文件的情况下执行此操作的任何建议?

2 个答案:

答案 0 :(得分:1)

浏览器必须可以访问您的JavaScript文件,因为浏览器执行而不是服务器。

这要求他们有一个URL。

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

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

答案 1 :(得分:0)

假设您了解自己正在做的事情以及对此的安全影响!..

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

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

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

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

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