尝试包含文件时“没有这样的文件或目录”

时间:2013-03-10 14:41:29

标签: php

今天我有一个小问题,我试图在php类中调用一个函数(Auth.php-> GetNumOnline())

我试图从一个处理我所有“统计数据”的类中调用它。

这是我的代码: 统计类

class statReciever
{

public function GetNumOnline()
{
    set_include_path("{$_SERVER['DOCUMENT_ROOT']}");
    include("../Authentication/Auth.php");
    $auth = new Auth();
    return $auth->NumOnline();
}
}

这是Auth Class的精简版

class Auth
{
 public function NumOnline()
 {
    return 0;
 }
}

以下是我的目录的屏幕截图: screenie

以下是我收到的错误:     [Sun Mar 10 14:35:25 2013] [错误] [client MASKED ] PHP警告:include(./../ Authentication / Auth.php):无法打开流:没有这样的文件或第16行/var/www/example.com/public_html/includes/statReciever.php中的目录,引用者:http://example.com/

任何人都知道如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

include_path总是从第一个脚本的工作目录计算出来。

使用__DIR__始终将类的目录用作基本路径。

include(__DIR__ . "/../Authentication/Auth.php");

答案 1 :(得分:1)

您可以随时使用:

include($_SERVER['DOCUMENT_ROOT'].'/projectFolder/Authentication/Auth.php');

包含您的文件。

当你的项目在index.php开始并且你想要包含一个包含另一个文件的文件时...然后确保另一个文件路径是绝对的! (基于index.php位置)

例如,我有一个名为config.php的常量文件,其中我总是定义变量,如:

define('PROJECT_LOCATION', $_SERVER['DOCUMENT_ROOT'].'/projectFolder');

然后我用这个常量来包含我的文件:

include(PROJECT_LOCATION.'/Authentication/Auth.php');

或类似的......