PHP在目录中包含路径



我已经看了几个不同的问题,关于我所遇到的同样的问题。我已经采用了一个解决方案,并将其应用到我自己的项目中。

这是我的目录结构。

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

唯一的问题是,对于根index.php文件以外的任何其他页面,config.php文件的路径将变得不正确。这样,CSS路径就会变得不正确,因为ROOT_PATH没有在任何地方定义。

当使用include时,处理路径的最佳方式是什么?

Use $_SERVER['HTTP_HOST'] .$_SERVER['DOCUMENT_ROOT']获取var/com/images的文档根目录。$_SERVER['HTTP_HOST']将获得当前url,如http://example.com/images . t,您的代码应该如下所示

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

并以这种方式包含

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

希望这对你有帮助

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

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

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

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

和不工作

我建议把它改成:

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

认为,

你需要做的是使你的配置包含绝对的,而不是相对的。路径以点./config开始,这意味着它是相对的。相反,将头文件设置为包含配置文件的绝对路径,如

<?php include '/home/user/config.php';?>
这样,无论文件在目录结构中的位置如何,任何页面都可以找到该文件。

相关内容

  • 没有找到相关文章

最新更新