我的根目录中的PHP文件INCLUDE header.php。 Header.php包含functions.php。我在一个子目录中添加新页面,所以我在header.php:CSS,菜单项和随后的INCLUDE到functions.php的所有链接中添加了前导斜杠。 CSS和菜单项在子目录中的此页面上正常工作,但功能不起作用。函数中没有链接似乎需要带有斜杠。
include
和前导斜杠的组合是否需要修改功能?
从根目录中的页面:
include('header.php');
从子目录中的页面:
include('/header.php');
来自header.php:
include('/functions.php');
不再有效的函数(从根目录或子目录中的页面调用):
function show_date($array_name){
if (date("Y F j",strtotime($array_name["exhibit_open"])) == date("Y F j",strtotime($array_name["exhibit_close"]))){
echo date("F j, Y",strtotime($array_name["exhibit_open"]));
}
elseif (date("Y",strtotime($array_name["exhibit_open"])) != date("Y",strtotime($array_name["exhibit_close"]))) {
$first_date_format = "F j, Y";
echo date($first_date_format,strtotime($array_name["exhibit_open"])). " - ". date("F j, Y",strtotime($array_name["exhibit_close"]));
} elseif (date("F",strtotime($array_name["exhibit_open"])) != date("F",strtotime($array_name["exhibit_close"]))){
$first_date_format = "F j";
echo date($first_date_format,strtotime($array_name["exhibit_open"])). " - ". date("F j, Y",strtotime($array_name["exhibit_close"]));
} else {
$first_date_format = "j";
echo date("F j",strtotime($array_name["exhibit_open"])). " - ". date($first_date_format,strtotime($array_name["exhibit_close"])). ", ". date("Y",strtotime($array_name["exhibit_close"]));
}
}
答案 0 :(得分:4)
标准路径101:
/path/somefile
- 领先的/
在文件系统的ROOT处锚定此路径结构,例如它相当于C:\path\somefile
。
path/somefile
- 没有领先/
。操作系统将使用程序“当前工作”目录作为路径的基础,因此如果您位于/home/foo
中的shell中,则somefile
将在/home/foo/path/somefile
中搜索
../somefile
。 ..
引用当前工作目录的PARENT目录,因此,如果您在/home/foo
,则会../somefile
搜索/home/somefile
。
请注意,您可以拥有非感性路径,例如
/../../../../somefile
。这是可以接受的,但是没有意义,因为你们都将路径锚定在文件系统的根目录,然后尝试去掉根目录,这是不可能的。此路径的操作等效于/somefile
。
答案 1 :(得分:2)
正如您所知,如果您要请求自己请求其他页面的php页面,使用require_once
代替include
可能会有所帮助。这将使得所有包含的页面都不会重复,并且您不必担心不小心包含不止一次的内容。
话虽如此......当您在根目录中请求页面时,它将在根目录中请求header.php,该目录将依次请求根目录中的functions.php。但是,如果您从子目录中请求,../header.php
将引用根目录中的header.php,但整个文件将被包含,然后它的子页面中的php页面最终会尝试包含{{1 }}。它需要请求/functions.php
,但这会导致根目录中的所有内容停止工作。
我建议在header.php中设置../functions.php
行的变量然后,header.php中的所有包含应该像$root = $_SERVER['DOCUMENT_ROOT'];
include($root."/functions.php");
会为您提供根目录的客观网址,无论您在何处请求header.php,都可以确保您引用正确的位置。
答案 2 :(得分:1)
Include
和Require
从字面上将代码拉入执行文件中,因此需要注意的一件事是子目录中的文件是从工作目录运行的。
示例:
|-templates-|-header.php
Docroot--|
|-inc-|-functions.php
|
|-index.php
的index.php
<?php
include 'template/header.php';
...
?>
模板/ header.php文件
<?php
include 'inc/functions.php';
...
?>
因为include.< / p>正在从docroot执行header.php代码