Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将JS外部文件链接到PHP项目根目录之外?_Javascript_Php_Jquery_Include_Root - Fatal编程技术网

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">