无法打开流没有这样的文件或目录。 PHP

时间:2012-09-16 07:47:31

标签: php php-include

我的文件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

2 个答案:

答案 0 :(得分:8)

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

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

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

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

对于在包含文件之前测试文件的存在,

user1280616也提出了一个有效的观点。也许您应该考虑实施它。

答案 1 :(得分:1)

你可以使用php file_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");