bik*_*y77 0 php relative-path include
在站点根目录中,我有以下文件夹和文件:

文件包含/ scripts.php包含指向其余页面运行所需的所有css/js文件的链接.当从站点根目录(ex cart.php)中的任何文件中包含scripts.php时,所有路径都可以正常工作.但是当从文件夹(例如/ admin)中包含路径不正确时,显然是因为/ admin中没有/ js或/ css目录.
我尝试了几个方法,例如将scripts.php中的路径从'./css/styles.css'改为./css/styles.css,或者只改为/css/styles.css但是没有用.也试过include($_SERVER["DOCUMENT_ROOT"] . "includes/scripts.php");但也没有成功.
如何在scripts.php中创建相对路径,以便无论它包含在哪里,所有css/js路径都是正确的并且与站点根相关?
这是scripts.php中一些链接文件的示例:
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.9.2.custom.min.js"></script>
<script type="text/javascript" src="js/jquery.alerts.js"></script>
<script type="text/javascript" src="js/cookie.js"></script>
<link rel="stylesheet" type="text/css" href="css/styles.css">
<link rel="stylesheet" type="text/css" href="css/layout.css">
Run Code Online (Sandbox Code Playgroud)
等等...
编辑:我看到大多数答案都理所当然地认为文件是在UNIX环境中托管的,这是不正确的,它是在Windows/Apache设置上开发的,并且在完成后将托管在UNIX服务器上.所以我需要一个适用于两个系统的解决方案,因此每当我编辑/上传文件到实时服务器时,我都不需要更改代码.
ROOTDIR在包含任何其他文件之前,在您的一个根文件中创建一个常量(例如.index.php,或创建一个在任何其他包含之前相对包含的文件):
//Place this in a file you always include relatively
define("ROOTDIR", dirname(__FILE__) . "/");
Run Code Online (Sandbox Code Playgroud)
无论你在哪里包括东西:
//Place this in whatever file
require_once(ROOTDIR . "admin/panels/users.php");
Run Code Online (Sandbox Code Playgroud)
或者,在同一个文件中,您可以使用以下内容代替常量set_include_path:
//Place this in a file you always include relatively
set_include_path(dirname(__FILE__) . "/");
Run Code Online (Sandbox Code Playgroud)
当你包括东西时:
//Place this in whatever file
require_once("admin/panels/users.php");
Run Code Online (Sandbox Code Playgroud)
如果您不想使用常量并且set_include_path可以访问PHP配置文件,那么您也可以include_path将配置更改为例如./var/www/,然后require_once在包含文件时简单地使用上面的内容.关于这里的更多信息.
好吧,我知道你会进入那个.我通常倾向于通过以下方式启动它来创建相对于root的路径/:
<script type="text/javascript" src="/js/jquery-1.8.0.min.js"></script>
<!-- ^ -->
Run Code Online (Sandbox Code Playgroud)
或者您也可以<base>在HTML中设置路径:
<head>
<base href="http://www.mydomain.com/" />
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
注意:设置<base>路径时,它还指定所有链接也将相对于基本路径,因此如果您指向管理文件夹中的subdir/链接将链接到http://www.mydomain.com/subdir/而不是 http://www.mydomain.com/admin/subdir/.