今天我有一个小问题,我试图在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;
}
}
以下是我的目录的屏幕截图:
以下是我收到的错误: [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/
任何人都知道如何解决这个问题?
由于
答案 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');
或类似的......