在我的网站上,我在根目录之外有我的资源文件夹,例如:
/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文件的情况下执行此操作的任何建议?
答案 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问题中有关动态内容的正确缓存标头的指南。
好处是,如果您愿意/需要,您可以进行动态脚本缩小/组合/包装/替换。