php类自动加载-似乎是缓存?

php类自动加载-似乎是缓存?,php,autoload,Php,Autoload,我最近在php代码中实现了以下代码以自动加载类: function my_autoloader($class) { include 'classes/class_' . $class . '.php'; } spl_autoload_register('my_autoloader'); 代码包含在文件中,该文件位于需要生成网页的所有文件的顶部。因此,我开始从代码中删除require_once调用。下面是一个例子: require_once('classes/class_web_page

我最近在php代码中实现了以下代码以自动加载类:

function my_autoloader($class) {
    include 'classes/class_' . $class . '.php';
}
spl_autoload_register('my_autoloader');
代码包含在文件中,该文件位于需要生成网页的所有文件的顶部。因此,我开始从代码中删除require_once调用。下面是一个例子:

require_once('classes/class_web_page.php');
正如您可能会从上面收集到的,我网站上的各种页面(这是一个在线社区,因此有论坛、图库等)都使用web_page类来生成页面标题、菜单等。各种代码创建web_page对象,设置各种参数以确定需要哪些菜单选项等,为页面提供一些内容,并生成html

在我更改class_web_page.php文件之前,一切似乎都很好。这个变化在网站的大部分地方都很明显。。。除了主页

我刷新了浏览器,如果再次打开,则关闭:-)尝试调用而不是仅仅调用,甚至在服务器上停止并重新启动apache。尽管如此,这些变化并没有显示在主页上。最后,我将require_once行放回index.php中。。。我在class_web_page.php中所做的更改出现在主页上

因此,在我看来,自动加载程序加载了class_web_page.php的缓存副本,没有任何东西,甚至没有重新启动Apache,能够说服它获得新版本。为什么它应该这样做的主页,而不是其他网页。。。我不知道

还有其他人经历过吗?我的自动加载器代码有问题吗?我怎样才能修复它。。。还是我要把所有的require_once语句放回原位-(


我的服务器有PHP 5.1.6版

你确定这个文件真的加载了(或者是缓存的版本)?

我找到了这个问题的答案……像往常一样,我有好几天没有遇到“bug”,结果发现我做了一些非常愚蠢的事情:

事实证明,在过去的某个时候,我不小心将class_web_page.php的一个副本上传到了站点的主目录而不是class子目录中,所以它存在了两次

因此,看起来,尽管我的自动加载程序告诉php在classes子目录中查找,但它将首先在与主脚本相同的目录中查找(在我的站点主页中为index.php)。所有其他站点页面脚本都在子目录中(论坛、图库等),因此它们是“正确的”使用/classes/class_web_page.php


我现在已经删除了主目录中的class_web_page.php副本…一切正常。

是否加载了APC之类的模块?我想没有。我只是调用了phpinfo()并搜索APC-未找到任何内容。我的web_page类为该页面创建了所有html,因此该类必须可用于index.php,否则我不会看到任何页面。但是,它没有显示我在class_web_page.php(定义该类)中所做的更改。我想不出任何可能发生的情况,除非它使用的是class_web_page.php的缓存版本。删除该文件时会发生什么情况?