将CodeIgniter从localhost上传到网站的问题

时间:2010-02-09 12:49:46

标签: php codeigniter configuration

我一直在使用CodeIgniter在本地开发一个网站,并尝试将其上传到我的网络服务器并收到以下错误(我在上传之前从未见过)。

Fatal error: Class 'CI_Hooks' not found in <snip>/system/codeigniter/Common.php on line 136

我已经读过CodeIgniter不能很好地使用PHP 5.3.x,除了他们的最新版本(我也下载并尝试上传,但只是替换我在系统目录中编辑过的文件),但我仍然得到同样的错误。

谷歌搜索这条消息没有多大帮助......有人看到类似的东西吗?

4 个答案:

答案 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.php82。我想这可能是某种.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中部署它时,它立即报告错误。幸运的是,这更容易追踪。