PHP包含目录中的路径

时间:2014-08-22 01:52:43

标签: php include-path

我已经查看了一些关于我遇到的同样问题的不同问题。我已经采取了解决方案并将其改编为我自己的项目。

这是我的目录结构。

/css
    -style.css
/includes
    -shop.css
    -header.php
    -footer.php
/php
/js
/shop
    -index.php

-index.php <-- homepage
-config.php  

在我的config.php里面我有

define('ROOT_PATH',$_SERVER['DOCUMENT_ROOT']);

我的header.php

<?php include './config.php';?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <?php echo '<link href="'.ROOT_PATH.'/css/style.css" rel="stylesheet">';?>
  <?php if ($_SERVER['REQUEST_URI'] == '/shop/'){echo '<link href="'.ROOT_PATH.'/includes/shop.css" rel="stylesheet">';} ?>
</head>

唯一的问题是,对于除root index.php文件之外的任何其他页面,config.php文件的路径将变得不正确。因此,CSS路径变得不正确,因为ROOT_PATH未在任何地方定义。

使用包含时处理路径的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

使用$_SERVER['HTTP_HOST']。$ _ SERVER ['DOCUMENT_ROOT']获取例如var/com/images的文档根目录。 $_SERVER['HTTP_HOST']会获得http://example.com/images之类的当前网址.TYour代码应如下所示

define('ROOT_PATH',$_SERVER['HTTP_HOST']);

并包括这种方式

<?php include'../config.php';

希望这有助于你

答案 1 :(得分:1)

可能在其他index.php文件中使用include的相对路径。

<?php include '../config.php'; ?>

答案 2 :(得分:1)

您正在使用服务器的实际文件系统路径来引用样式表。这就像尝试做类似的事情:

<link href="C:\your_website_path/includes/shop.css"...

并且不会工作。

我建议将其更改为:

define('ROOT_PATH', 'http://www.your-website-url.com/');

此致

答案 3 :(得分:0)

你需要做的是让你的配置包括绝对,而不是相对。你用点./config开始路径,这意味着它的相对。而是设置您的标题以包含配置文件,其中包含像这样的绝对路径

<?php include '/home/user/config.php';?>

这样,任何页面都可以找到该文件,无论它在目录结构中的位置如何。