识别问题
我在 _ci_load() 方法中查看了system/core/Loader.php,并提取了似乎导致您的问题的代码:
#/system/core/Loader.php::_ci_load
$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);
$_ci_file = ($_ci_ext == '') ? $_ci_view.'.php' : $_ci_view;
foreach ($this->_ci_view_paths as $view_file => $cascade)
{
if (file_exists($view_file.$_ci_file))
{
$_ci_path = $view_file.$_ci_file;
$file_exists = TRUE;
break;
}
if ( ! $cascade)
{
break;
}
}
....
if ( ! $file_exists && ! file_exists($_ci_path))
{
show_error('Unable to load the requested file: '.$_ci_file);
}
解决问题
我查看了使用的方法,它们似乎都支持 PHP 4.0.3 及更高版本,因此您的问题很可能与不兼容的 PHP 版本有关。
似乎触发您的问题的代码在这里:
if ( ! $file_exists && ! file_exists($_ci_path))
{
show_error('Unable to load the requested file: '.$_ci_file);
}
现在,我的猜测是当你添加.php扩展名时它会起作用,因为这个方法实际上通过了:
file_exists($_ci_path)
一个可能的操作是查看 $file_exists 变量发生了什么,因为它仅在发生这种情况时设置为 true:
if (file_exists($view_file.$_ci_file))
可能有帮助的其他信息
php.net 上的 file_exists 方法也有一个有趣的评论:
file_exists will have trouble finding your file if the file permissions are not read enabled for 'other' when not owned by your php user. I thought I was having trouble with a directory name having a space in it (/users/andrew/Pictures/iPhoto Library/AlbumData.xml) but the reality was that there weren't read permissions on Pictures, iPhoto Library or AlbumData.xml. Once I fixed that, file_exists worked.
也许您可以发布这些文件的权限或尝试在那里探索。
您也可以尝试在系统类中进行调试,并查看其中是否有任何问题。这很奇怪,因为我自己从来没有遇到过类似的事情,老实说,我看不出图书馆会在那里出现失误——这很可能与权限有关