3

我有一个Profile.php包含Profile_Control.phpprofile_control包含的文件Profile_Model.php。到这里为止,一切都很好。

我有另一个名为Upload.php从中上传数据的脚本。这个 Upload.php 还包括Profile_Control.php并且如你所知Profile_Control包括Profile_Model.php。现在我不知道为什么它会给出这样的错误。当 Profile.php 加载时它工作正常但是当我上传数据时它说

Warning: include(../Model/Profile_Model.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\php\gagster\Control\Profile_Control.php on line 4

在 Upload.php 中:

include_once("../../Control/Profile_Control.php");

在 Profile.php 中:

include_once("../Control/Profile_Control.php");

在 Profile_Control.php 中:

include_once("../Model/Profile_Model.php");

文件结构:

 +-Control/
 |  |    
 |  +---- Profile_Control.php
 |
 +-Model/
 |  |
 |  +---- Profile_Model.php
 |
 +-Other/
    |
    +-- Upload/
           |
           +---- Upload.php
4

2 回答 2

8

../您为什么不尝试提供相对于您所在位置的绝对路径,而不是使用相对路径 ( ) $_SERVER['DOCUMENT_ROOT']。我通常定义一个常量来帮助提高可读性 -

define('_root',$_SERVER['DOCUMENT_ROOT']);

include(_root.'/Control/Profile_Control.php');

现在,您可以在要包含的每个文件中放置相同的代码行Profile_Control.php

user1280616还提出了一个关于在包含文件之前测试文件是否存在的有效观点。也许您也应该考虑实施它。

于 2012-09-16T07:58:07.533 回答
1

你可以使用 phpfile_exists()函数来确保包含该文件,如果它不是你的东西

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}

并使用

defined('root') ? null : define('root', "url of your site "  ); 

include_once(root."rest of address");
于 2012-09-16T07:50:44.677 回答