Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php包含来自另一个目录的文件_Php_Include - Fatal编程技术网

php包含来自另一个目录的文件

php包含来自另一个目录的文件,php,include,Php,Include,以下是一个结构示例: /main /css style.css /include article1.php article2.php header.php index.php 在my header.php中,我有以下css代码: <link rel="stylesheet" type="text/css" href="css/style.css" /> 例如,在我的index.php中,我的第一行是: <?php include 'header.ph

以下是一个结构示例:

/main
 /css
  style.css
 /include
  article1.php
  article2.php
 header.php
 index.php
在my header.php中,我有以下css代码:

<link rel="stylesheet" type="text/css" href="css/style.css" />

例如,在我的index.php中,我的第一行是:

<?php include 'header.php'; ?>

现在,一切正常。接下来,我将在article1.php文件中插入以下代码:

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

内容(菜单和其他html)显示正确,但是CSS根本不会显示/识别。基本上,所发生的事情是头文件被包括在内,但服务器不尊重目录。为了正确显示CSS,我必须将CSS的
链接rel
更改为
。/CSS/style.CSS
,但如果这样做,它将无法处理位于主目录中的文件


我希望我把问题说清楚。我做错了什么?如何包含来自不同目录的文件并保留其中的链接?

这与包含中的路径工作方式有关。我建议尽可能从文档根目录中进行路径选择

<?php include( $_SERVER['DOCUMENT_ROOT'] . '/header.php' ); ?>


这将适用于任何文件。

您应该从根目录中包含css文件。所以/css/style.css总是从根开始,然后从根开始。我相信这会解决所有情况下的问题。

而不是使用相对路径:

href="css/style.css"
使用webroot中的绝对路径:

href="/css/style.css"

首先,问题是你的CSS文件链接是错误的。最好的做法是查看页面中HTML(查看源代码)的输出。让我们把它分解一下(formindex.php):

Index.php
位于
domain.tld/Index.php
。您的css文件位于
domain.tld/css/*
。查看索引文件时,标题为

<link rel="stylesheet" type="text/css" href="css/style.css" />
这意味着你必须建立完整的链接或改变你的亲属关系。因为CSS位于根目录,所以简单的方法就是使用以下命令

<link rel="stylesheet" type="text/css" href="/css/style.css" />
                                             ^

^
这意味着它将查看css目录的域根,例如
domain.tld/css/styles.css
。如果您的顶级目录是
/main
,请使用
/main/css/styles.css
您有两个选择

  • 传递包含文件的相对路径
  • 或2。您使用文件的绝对路径

    <link rel="stylesheet" type="text/css" href="/css/style.css" />
    

    使用已被称为包含的字段中的相对包含始终是一个问题,每次指定相对位置时,请替换

    ../some_directory/some_file.php
    


    dirname(\uuuu FILE\uuuu)
    是当前目录。

    我可以解释一下您的问题和解决方法吗

    php中的include与C中的include一样工作。 包括将页面内容复制/粘贴到第一个页面中的页面时

    因此,有两个文件:

    include.php

    
    
    main.php

    
    
    当您请求“main.php”页面时,您将获得以下内容:

    
    
    因此,如果您需要在页面中包含一个元素。你有两个选择:

    1。绝对路径(更好的方式)


    使用绝对路径而不是相对路径。通过这种方式,您可以在不使用当前路径的情况下包含来自任何地方的文件

    2。变量

    您可以使用包含存储库/网站根目录的相对路径的变量。因此,每次必须包含页面或创建页面时,必须定义一个变量,如下所示:

    include.php

    
    
    main.php

    
    
    要了解更多关于include的信息,请在站点的
    部分插入
    href
    属性。将
    href
    属性设置为网站的基本URL,所有相关请求都将通过该基本URL发送

    <base href="http://my-website-url.com/" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    
    
    
    使用正确设置的
    base
    标记,用户浏览器将尝试从URL
    http://my-website-url.com/css/style.css


    注意:这不仅会影响样式表,还会影响文档中的所有相关链接。

    为什么不在index.php中只包含一次标题?重复1000次。例如,你是什么意思?像
    $\u服务器['DOCUMENT\u ROOT']
    将为您提供一个绝对路径
    dirname(uu FILE_uuu)
    (或多个
    dirname
    将为您提供一个来自写入文件的相对路径。
    。/foo
    将为您提供来自初始文件的相对路径(index.php调用foo/bar.php,调用../baz.php意味着index.php将尝试查找../baz.php)。我应该重命名目录名和文件术语还是…?不,我使用的名称是占位符。您可以使用
    $\u服务器['DOCUMENT\u ROOT']
    回答
    ,或者用
    替换
    。返回到文档根目录并从那里继续是非常简单的,不会造成混乱。干杯!
    <link rel="stylesheet" type="text/css" href="/css/style.css" />
    
    ../some_directory/some_file.php
    
    dirname(dirname(__FILE__)) . '/some_directory/some_file.php'
    
    <base href="http://my-website-url.com/" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />