我有一个名为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
答案 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');