<分区>
<分区>
我在 includes/template.php
中有一个 php 包含文件.在此文件中,我在同一目录中包含了另外两个文件(页眉和页脚文件)。
根目录中包含页眉和页脚文件的文件工作正常,它只是 template.php
文件搞砸了,因为它没有从 css/style.css
加载 css 和 javascript 文件和 script/main.js
.我在网上看过,发现有人建议使用 $_SERVER['DOCUMENT_ROOT'];
,但是当我这样做时这不起作用:
include($_SERVER['DOCUMENT_ROOT'].'/includes/header.php');
include($_SERVER['DOCUMENT_ROOT'].'/includes/footer.php');
提前致谢。
最佳答案
如果您的服务器根目录与您的网站根目录相匹配(例如 localhost/index.php 是您的主页),您只需将前导 /
添加到您的资源路径: /script/main.js
。
这是因为您指定了一个相对路径:如果您访问 localhost/dir/index.php
,浏览器将查找的路径是 localhost/dir/script/main.js
.
放置一个前导的 /
会将路径转换为绝对路径,因此它将在您的网站上保持一致。
如果您的服务器根目录与您的网站根目录不匹配(例如 localhost/path/to/root/index.php 是您的主页)或者您希望您的代码有效,如果这是在这种情况下,您需要在每个资源链接之前添加 /path/to/root/
。
为此,您可以先存储从服务器根目录到网站根目录的路径,然后将其添加到所有资源链接的前面。
在你的主 index.php
文件中:
$webRoot = realpath(dirname(__FILE__));
$serverRoot = realpath($_SERVER['DOCUMENT_ROOT']);
if ($webRoot === $serverRoot)
$pathToWebRoot = "";
else
$pathToWebRoot = substr($webRoot, strlen($serverRoot) + 1);
...
echo "<link rel='stylesheet' href='$pathToWebRoot/css/main.css'>";
//Or
<link rel="stylesheet" href="<?= $pathToWebRoot ?>/css/main.css">
关于php 文件无法加载存在于另一个目录中的 css 或 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55026758/