我希望使用位于名为/template的文件夹中的页眉(包括css,js和图像(和页脚文件。然后,这些文件将包含在目录下的每个文件中,例如:
/template/header.php + footer.php
/home/index.php
/products/products.php
/products/hardware/types/hardware.php
/css
/js
/images
当我使用:
include (__DIR__ . "/../template/header.php");
该文件包含在内(尽管我需要更改每个文件并更多地广告"/../"我走的目录越往下(,但所有的 css、js 和图像都坏了。
这是我的标题(位于标题.php,包含的文件之一(:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="icon" type="image/gif" href="images/favicon.ico">
<link rel="stylesheet" type="text/css" href="../css/layout.css"/>
<link rel="stylesheet" type="text/css" href="../css/slider.css"/>
<link rel='stylesheet' type='text/css' href='../css/menus.css'/>
<link rel='stylesheet' type='text/css' href='../css/forms.css'/>
<link rel="stylesheet" href="css/jquery-ui.css" type="text/css" media="all"/>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/jquery.elastic.source.js"></script>
<script type="text/javascript" src="../js/control.js"></script>
<title>APEC Energy - <?php echo($PageTitle);?> </title>
</head>
我现在正在尝试使用配置文件(这很难工作,仍然不适合我(。
config.php(放在根文件夹中((我需要在数组、文件路径或目录路径中放置更多信息吗?如果是这样,如何?
<?php
$paths = array(
"root" => "./",
"controller" => "controller",
"stylesheets" => "css",
"images" => array(...),
"javascript" => array(...),
);
$projectName = "/";
function fInc($filePath){
global $projectName;
return '//'.$_SERVER['HTTP_HOST'].'/'.$projectName.'/'.$filePath;
}
?>
并在每个.php文件中调用包含文件 IM 使用以下:
<?php
$rootDir = $_SERVER['DOCUMENT_ROOT']."/".(explode ('/', $_SERVER['PHP_SELF'])[1]);
require_once($paths['helper']['html']."template/header.php");
?>
当我使用 var_dump($paths( 时,它会打印出"NULL">
但是现在只是得到一个空白屏幕?
谢谢
我总是在每个 php 的第一行包含一个config.php
:
require_once($_SERVER['DOCUMENT_ROOT']."/".(explode ('/', $_SERVER['PHP_SELF'])[1])."/config.php");
此代码应始终找到根目录,然后包含config.php
文件。请注意,您可以将此文件放在您想要的任何位置 - 它将始终自行找到它的位置。如果随后将文件移动到另一个目录,则无需更改任何内容。
然后,此配置文件定义相对于根目录的所有子目录和其他重要文件的路径:
$paths = array(
"root" => "",
"controller" => "controller",
"stylesheets" => "css",
"images" => array(
"icons" => "img/icons",
"controls" => "img/controls"
),
"javascript" => array(...),
...
);
这个数组意味着根文件夹(你的public_html
(包含目录"控制器","样式表",图像"等。图像放置在"img/icons"或"img/controls"中。
所有其他文件都包含在内,因此:
require_once($paths['helper']['html']."/form.php");
这可能非常有用,因为它允许您重组完整的目录布局,并且您只需要更新您的配置.php。
最后但并非最不重要的一点是,配置还包含如下函数:
$projectName = "YourProjectFolderName";
function fInc($filePath){
global $projectName;
return '//'.$_SERVER['HTTP_HOST'].'/'.$projectName.'/'.$filePath;
}
它可用于转换将插入到HTML文档中的路径。
编辑:请注意,定义一个包含所有路径的数组只是一个建议。它在我的项目中帮助了我,因为我经常重组我的项目布局。如果你在项目中不这样做,你可以只定义一个
$rootDir = $_SERVER['DOCUMENT_ROOT']."/".(explode ('/', $_SERVER['PHP_SELF'])[1]);
然后包含包含文件
require_once($rootDir . "/home/index.php");
这样,您将不再需要config.php
。
尝试:
<?php
$basePath = dirname(__FILE__);
// Or __DIR__, since PHP 5.3.0
require_once($basePath . "relative/path/from/basePath");
// replace the string with your real relative path
编辑:
问题 1(是的。 dirname(__FILE__)
描述了文件所在目录的绝对路径。
问题 2(没必要。如果您知道要包含的文件只是一级或两级,您也可以使用
对于一个级别 - include("../filename.php");
对于两级 - include("../../filename.php");
等等..
注意:但我仍然建议使用绝对路径。
供您参考:
PHP:绝对路径与相对路径