文件路径问题,同时包含来自不同目录的其他文件的文件

时间:2015-04-07 07:43:07

标签: php html css path relative-path

文件结构:

app/
 - index.php
 - core -> header.php, setup.php
 - img -> ...
 - lib -> css->stylesheet.css, js->script.js

我有一个header.php文件,其中包含指向CSS和JS文件的链接。 它看起来像这样:

<link rel="stylesheet" href="lib/css/stylesheet.css"/>
<script src="lib/js/script.js" type="text/javascript"></script>

我需要在其他两个文件中包含header.php:index.php和setup.php。

由于存在index.phpapp/lib/css/stylesheet.css,文件在app/lib/js/script.js中正常加载。 如果从setup.php加载,它将在目录'app/core/lib/css ... and js ... '内查找文件。

我尝试使用绝对路径解决此问题,例如:

$path = realpath($_SERVER['DOCUMENT_ROOT']);

并将其附加到header.php中的链接和脚本标记 问题是Windows无法访问本地资源。

如何解决此类问题?提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用

等配置创建config.php文件
<?php
$webPath = 'http://example.com/';
$jsPath = $webpath . 'lib/js/';
$cssPath = $webPath . 'lib/css/';

然后在所有入口点中包含config.php。这里的入口点是index.php和setup.php

一旦你有了,header.php应该有简单的代码:

<link rel="stylesheet" href="<?= $cssPath ?>stylesheet.css"/>
<script src="<?= $jsPath ?>script.js" type="text/javascript"></script>

答案 1 :(得分:1)

您应该使用http:// protocol包含.js或.css文件。 您可以在配置文件中定义常量,如下所示:

define('SITE','http://'.$_SERVER['HTTP_HOST'].'/<project_name>/');

现在您可以在header.php中使用SITE常量,如下所示:

<link rel="stylesheet" href="<?php echo SITE;?>lib/css/stylesheet.css"/>
<script src="<?php echo SITE;?>lib/js/script.js" type="text/javascript"></script>

希望它对你有所帮助。 :)