我在使用spl_autoload_register()时遇到了一个奇怪的行为,我无法绕过它。
我有两个网站;第一个是http://localhost/website
它包含专用于类的文件夹:document_root/website1/classes/
我写了一些课程foo.class.php
和bar.class.php
。
网站上的每个php文件(例如index.php)都通过以下代码加载类:
function loadTheClasses($classe) {
require_once('classes/'.$classe.'.class.php');
}
spl_autoload_register('loadTheClasses');
第二个网站位于http://localhost/website2。
它还包含一个专门用于类document_root/website2/classes/
的文件夹,我在其中编写了类bar.class.php
。
此外,网站上的每个php文件(例如index.php)都通过以下代码加载类:
function loadTheClasses($classe) {
require_once('classes/'.$classe.'.class.php');
}
spl_autoload_register('loadTheClasses');
如果这可能会有所帮助,请注意文件website1/classes/bar.class.php
和website2/classes/bar.class.php
是完全相同的文件。
问题在于:
1 - 我首先运行website1(website1 / index.php) - >一切正常
2 - 在另一个选项卡上,我然后运行website2(website2 / index.php)
在网站2上,我收到以下错误:
Warning: require_once(website2/classes/foo.class.php): failed to open stream: No such file or directory in website2\index.php on line xx
Fatal error: require_once(): Failed opening required 'website2/classes/foo.class.php' (include_path='.; php\PEAR') in website2\index.php on line xx
直到我按F5功能键重新加载页面...在这种情况下,错误不再出现。 但是,如果我返回标签网站1,然后返回标签网站2,错误再次上升! (直到我再次使用F5键)
website2如何调用foo.class.php?当然,这个类在website2中不存在!但是为什么website2试图加载呢?
请帮忙!