在php中使用include

时间:2011-11-05 12:40:18

标签: php include dreamweaver

我有一个名为header的文件(我网站的标题)..我在我的所有网站中都使用该文件。问题在于它包括:

include_once("../untitled/sanitize_string.php");

这意味着可能会抛出错误,具体取决于谁调用头文件。

我有子目录的目录,子目录和子目录..是否有一种简单的方法可以防止这种情况发生..而不是将satize字符串包括在每个页面而不是在头文件中

Warning: require_once(/untitled/sanitize_string.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\PoliticalForum\StoredProcedure\User\headerSite.php on line 7

致命错误:require_once()[function.require]:在C:\ xampp \ htdocs \中打开所需的'/untitled/sanitize_string.php'(include_path ='。; C:\ xampp \ php \ PEAR')失败第7行的PoliticalForum \ StoredProcedure \ User \ headerSite.php

5 个答案:

答案 0 :(得分:5)

您可以考虑在使用include path时设置全局include

答案 1 :(得分:4)

对于php 5.3,你可以这样做:

include_once(__DIR__ . '/../untitled/sanitize_string.php');

其中__DIR__是当前文件的目录

对于旧版本,您可以使用

include_once(dirname(__FILE__) . '/../untitled/sanitize_string.php');

其中__FILE__是当前文件的路径

假设您有以下结构:

/app/path/public/header.php
/app/path/public/user/profile.php
/app/path/untitled/sanitize_string.php

如果您的header.php包含santitize_script.php,其相对路径如下:

include_once("../untitled/sanitize_string.php");

php解释器会尝试将该文件RELATIVELY包含到当前工作目录中,因此如果您要执行http://localhost/header.php之类的请求,它会尝试将其包含在/app/path/public/../untitled/sanitize_string.php中并且它会起作用。

但是如果您尝试执行http://localhost/user/profile.php之类的请求并且profile.php包含header.php,则header.php会尝试包含来自/app/path/public/user/../untitled/sanitize_string.php的文件,这将不再有效。 (/app/path/public/user现在正在工作的目录)

这就是为什么在包含文件时使用绝对路径的好习惯。在header.php中使用时,__DIR____FILE__常量将始终具有相同的值:/app/path/public/app/path/public/header.php,无论header.php将在哪里之后使用

答案 2 :(得分:1)

使用绝对路径...

include_once('/home/you/www/include.php');

答案 3 :(得分:1)

使用绝对路径为yes123表示。

include_once(dirname(__FILE__)."/../untitled/sanitize_string.php");

答案 4 :(得分:1)

你必须在这里使用绝对路径,而不是相对路径。我经常使用旧的Server vars设置一些常量来表示重要的目录。像这样:

define('MY_DIR',$_SERVER['DOCUMENT_ROOT'].'/path/to/yer/dir');

然后,修改您的include语句:

include_once(MY_DIR.'/your_file.php');