我有一个小型的PHP网站,其中包含我的大部分页面形式:
<?php include("heading.php"); ?>
<!-- Content of the page -->
<?php include("footing.php"); ?>
其中“footing”包含一些东西放在每个文件的末尾并“标题”很多东西(包括另一个包括菜单)。问题是:我开始有很多php文件沙我想把它们中的一些放在文件夹中。直接的方法是将文件夹中文件的代码更改为:
<?php include("../heading.php"); ?>
<!-- Content of the page -->
<?php include("../footing.php"); ?>
但是它不起作用,因为包含文字复制代码而不是在原始文件的文件夹中执行它,因此除非我在新文件夹中复制这些文件,否则将找不到heading.php中的任何include和css。
答案 0 :(得分:2)
修改heading.php,使其加载的文件的路径是绝对的。例如,如果您从css/style.css
加载CSS文件,请使用/css/style.css
或http://example.com/css/style.css
。
答案 1 :(得分:2)
您还可以在php.ini中或直接在代码中编辑包含路径:
//Must be called before every include, if not stated in your php.ini
$PATH=get_include_path();
set_include_path($PATH.":/absolute/path/to/your/include/folder/");
然后即使您在子目录中,也可以使用这种方式:
<?php
include "heading.php"; //no brackets
include "whatever.php";
?>
答案 2 :(得分:1)
听起来你只是忘记了目录结构中的位置。使用 ../ 会将您带回一个级别,使用 ./ (或只需 / )会将您带回根目录并 ../../带你回到两个级别。
诀窍是知道你在目录结构中的位置以及要包含的文件的位置。如果您要包含或链接到 css 文件夹中的文件,但是您位于 inc 文件夹中的文件中,则必须返回到根目录,然后到 css 所以你要把 /css/filename.ext
但是,如果您位于 fonts / glyphicons 文件夹中并希望链接到 fonts / font-awesome 文件夹中的字体,则可以使用 ../字体真棒即可。像泥一样清楚?
我所做的是创建三个(或更多)文件夹。这有助于保持各种文件的组织和缩写字母,即:
然后在我的heading.html文件中(我使用html作为页眉和页脚)我包含了一些像这样的项目:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $page_title; ?></title>
<meta name="Description" content="<?php echo $page_description; ?>">
<meta name="Keywords" content="<?php echo $page_keywords; ?>">
<meta name="Author" content="<?php echo $author_name; ?>">
<meta name="Viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="/css/quicksite-redsand.css" rel="stylesheet">
<link href="/img/mm.png" type="image/x-icon" rel="shortcut icon">
<!--[if lt IE 9]><script src="/js/html5shiv.js"></script>
<script src="/js/respond.min.js"></script><![endif]-->
</head>
<body>
然后在我的页面中,例如index.php(主页),我为该特定页面设置了一些参数,还包括一些片段,如标题,菜单,其他正文文本项和页脚,如下所示:< / p>
<?php
$page_name = 'Homepage';
$page_author = 'My Name...';
$page_keywords = 'home, home page, homepage';
$page_description = 'This is the home page for the ...';
$active_home = 'class="active"';
$select_home = 'class="selected"';
include ('inc/config.php'); //common to all pages
include ('inc/header.html'); //common to all pages
include ('inc/menus.html'); //common to all pages
include ('inc/banner.html');
include ('inc/review.html');
include ('inc/footer.html'); //common to all pages
?>
由于在你的index.php和你的大多数网页中你都处于根级别,在主目录中可以这么说,你只需 inc 而没有 / 。看起来PHP不喜欢不必要的,因为它在我尝试时给了我一个错误...
我知道这是一个冗长的回答,但我想我会说明更好的理解。
答案 3 :(得分:0)
好的不是你的问题的答案,但是尝试另外一种方式,有一个包含页眉和页脚的布局文件,并动态包含主要的内容。
<html>
<head></head>
<body>
etc...
<?php include_once '/path/to/content.php'; ?>
etc...
</body>
</html>
答案 4 :(得分:0)
我不确定我是否理解你的问题,但我有以下答案 我认为你应该使用相对的css路径到你的网站地址 例如,如果我们有一个css文件,它应该是那样的
<link ...src="/styles/somecss.css">
所以无论你把它放在你的应用程序中,这都会走这条路 http://wesiteaddres/style/somecss.css
您可以将include路径设置为您想要的任何目录 set_include_path();
希望这会有所帮助