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
您有两个选择
<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
标记,用户浏览器将尝试从URLhttp://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" />