2014-04-04 109 views
-1

在我的网站,我有我的资源文件夹的根目录之外,例如:如何链接我的PHP项目根目录之外的JS外部文件?

/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文件或不在根目录下的任何建议?

+0

您的问题发布似乎已中断。 要基于它的可见部分回答你的问题: 如果/ var/www/html是你的根目录,你必须在那个目录内的某个地方有js。 问题是:浏览器必须能够访问te文件。/var/www/html之外的任何内容都无法访问。乐于。 – Arnout

回答

1

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

这就要求他们有一个URL。

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

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

+0

理解,谢谢 –

0

假设你知道你在做什么,那安全隐患!..

您创建linkjs.php脚本,需要相对脚本路径(从一些根目录,可能在/ var/WWW /资源/ JS)作为参数,如:

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

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

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

好处在于,如果您喜欢/需要,您可以进行即时脚本缩小/合并/换行/替换。

相关问题