php 文件无法加载存在于另一个目录中的 css 或 javascript 文件

标签 php css

<分区>

我在 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/

上一篇:javascript - 在响应式粘性导航栏中更改汉堡包图标的颜色

下一篇:html - 如何创建不同的过渡/动画延迟?

相关文章:

php - 在插入数据之前检查现有条目

css - 如何在 vue.js 中定义路由器链接内容颜色

css - 我如何覆盖用户代理——使用来自 angularjs 的按钮

php - 交易期间 key '...' 的重复条目 'PRIMARY'

.htaccess - 共享主机帐户中的 php.ini 配置更改

php - 试图将 php 对象插入 mysql DateTime 对象 "ad_endDate"

css - Flexbox 容器元素左对齐

php - 确定文件是否为 PHP 图像的最佳方法是什么?

html - Firefox 中的额外垂直滚动

javascript - 如何将这个球附加到光标上?