当我尝试使用问题类时,我收到以下错误:
Fatal error: Class 'database' not found in path/problem.php on line 25
我不明白为什么我得到这个错误,在problem.php的顶部我需要database.php。发生了什么事?
problem.php
<?php
require("common.php");
require("database.php");
...
?>
database.php中
<?php
class database
{
...
}
?>
答案 0 :(得分:11)
这可能是一个包含路径问题。为了解决它,在你的problem.php文件中
这样做:
echo realpath (dirname(__FILE__));
将输出类似
的内容/无功/网络/ HTML / myfilepath /
你的文件,problem.php将在那个目录中。
现在,如果database.php也在该目录中,你可以这样做
$filepath = realpath (dirname(__FILE__));
require_once($filepath."/database.php");
如果它在其他地方你可以做到
require_once($filepath."/../../path/to/somewhere/else/database.php");
答案 1 :(得分:1)
你包含文件吗?
include "database.php"; // or the path relative to database.php
class problem
{
没关系。 也许:include(必需)没有打开文件。
答案 2 :(得分:0)
可以添加
echo "OK";
到database.php的页脚并再次检查?
所以,我们可以理解,database.php确实包含在页面中。
答案 3 :(得分:-1)
后人:只是为了澄清这个失败的原因是你从ORIGINAL调用的角度来看,让我解释一下这个例子:
myfolder/index.php
<?php
include ("classes/problem.php");
...
?>
这意味着,当您到达“problem.php
”并提及“database.php
”时,您处于“myfolder/
”,就PHPland而言,并非“myfolder/classes
” “(你需要进入这个才有意义)。正确的做法是通过第1页第1行的常量来简单地使用绝对路径。我知道很多人说的很糟糕 - 但是老实说这就是“命名空间”应该修复但是我仍然会使用常量(IMHO命名空间在php中很糟糕,更多的是与自我强化/开源广告/作者自我吹嘘任何具体或有用的议程)