Javascript 如何将JS外部文件链接到PHP项目根目录之外?
在我的站点上,我的资源文件夹位于根目录之外,例如:Javascript 如何将JS外部文件链接到PHP项目根目录之外?,javascript,php,jquery,include,root,Javascript,Php,Jquery,Include,Root,在我的站点上,我的资源文件夹位于根目录之外,例如: /var/www/html/是根目录 /var/www/resources/ 我目前有一个配置文件,用于设置库的位置,这样我就可以将其包含在php中,如下所示: defined("LIBRARY_PATH") or define("LIBRARY_PATH", realpath(dirname(__FILE__) . '/library')); 当我使用以下选项时,该选项非常有效: <?
/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文件时,它不起作用:
e、 g
链接到“www.website.com/resources/library/js/common.js”
或
假设您了解自己正在做的事情及其安全含义
创建linkjs.php脚本,该脚本将脚本的相对路径(从某个根目录,可能是/var/www/resource/js)作为参数,如:
<script src="/linkjs.php?p=test.js">
在PHP脚本中,解析完整的文件路径,检查它是否确实是根目录下的文件(以防止参数中的../出现),PHP用户是否可读,读取内容并将其输出到响应中。当然,不要忘记将内容类型设置为text/javascript
理想情况下,还应该根据源文件修改时间提供适当的缓存头,但这本身就是一个主题。请参阅其他SO问题中关于为动态内容正确缓存标头的指导原则
好处是,如果您愿意/需要,您可以动态地进行脚本缩小/组合/包装/替换 浏览器必须能够访问JavaScript文件,因为它们是由浏览器而不是服务器执行的
这要求他们有一个URL
将文件放在webroot下是为静态文件提供URL的标准方法
或者,您可以编写一个程序(例如PHP),读取文件,然后将其内容输出到浏览器。这更为复杂,使得处理缓存控制头更为灵活,因此不建议这样做 你的问题帖好像坏了。根据它的可见部分回答您的问题:如果/var/www/html是您的根目录,那么您必须在该目录中的某个地方有js。问题是:浏览器必须能够访问te文件。无法访问/var/www/html以外的任何内容。高兴吧。
<script src="<?php echo LIBRARY_PATH; ?>/js/test.js"></script>
<script src="/linkjs.php?p=test.js">