我一直在使用CodeIgniter在本地开发一个网站,并尝试将其上传到我的网络服务器并收到以下错误(我在上传之前从未见过)。
Fatal error: Class 'CI_Hooks' not found in <snip>/system/codeigniter/Common.php on line 136
我已经读过CodeIgniter不能很好地使用PHP 5.3.x,除了他们的最新版本(我也下载并尝试上传,但只是替换我在系统目录中编辑过的文件),但我仍然得到同样的错误。
谷歌搜索这条消息没有多大帮助......有人看到类似的东西吗?
答案 0 :(得分:1)
您使用的CI版本是什么?我使用最新的CI版本1.7.2并在文件system/codeigniter/Common.php
中找不到对CI_Hooks
类的任何调用。
开发时是否有自定义库或触摸CI系统文件?您是否已验证所有文件是否已成功上传到服务器?
答案 1 :(得分:1)
只需将codeigniter zip文件WGET WGET直接传送到您的服务器,而不是上传文件并在传输过程中存在损坏风险。
wget http://codeigniter.com/download.php
解压缩该文件,然后将其移至您的网站根目录。
现在加载您的域并确保基本CI安装无需任何修改即可正常运行。如果可行,那么一次一点地移动您的网站特定文件并经常重新加载,以便您知道什么中断(如果有的话)。
在我的情况下,没有什么破坏,所以我只能假设SFTP是我的文件borking或发生了一些其他奇怪的问题。
答案 2 :(得分:1)
“Hooks”类的加载发生在CodeIgniter.php
上82
。我想这可能是某种.htaccess问题,或者系统文件夹的路径错误。
答案 3 :(得分:0)
该行位于名为load_class的函数中,搜索“CI_Hooks”表示它在/system/libraries/Hooks.php中定义。搜索'hooks'(带引号)显示一行
$EXT =& load_class('Hooks');
在system / codeigniter / CodeIgniter.php
中所以你可能只想检查系统/库是否有Hooks.php,并且它实际上有一个大写字母H.如果不是那么那就是你的问题。
在Windows下,由于各种历史原因,文件名的大小写无关紧要,因此您的应用程序在Windows下运行正常,但当您将其移动到linux / unix时,它会开始出现问题。
当我给模型文件名称一个大写第一个字母时,我犯了这个错误。这在windows中运行良好,但是当我在linux中部署它时,它立即报告错误。幸运的是,这更容易追踪。