0

我多年来一直在使用 CodeIgniter (1.7.2+),并让它在 15+ 个实时生产环境中运行(喜欢它)。最近我和我的团队指定了一个非常复杂的系统,它需要比标准 MVC 更复杂的东西,所以我们开始研究用于 CI 的 HMVC 模块化扩展(2.0.3)。到目前为止,我们已经在本地系统的 XAMPP 和 MAMP 环境中启动了它,完全没有问题,它看起来正是我们需要的。当我们尝试在 CentOS 中加载它时,问题就出现了。

使用与我们本地安装完全相同的 SVN 存储库并将其拉出到 CentOS 服务器(我尝试了两个单独的 CentOS 机器),它只会抛出一个白屏——跟踪日志我收到 500 错误。我确信它在 HMVC 模块内部,因为同一个 CentOS 安装正在运行基本 CI 安装而没有问题。

为了排除故障,我删除了加载数据库的自动加载条目,然后我将以下输出显示到屏幕上:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: CI::$db

Filename: MX/Controller.php

Line Number: 58

我只在 CentOS 盒子上得到这个,该文件的第 58 行不是很清楚,HTTPD 错误日志也没有显示任何有用的东西。有没有人遇到过这个问题,其他人可以重现吗?除了基本 CI 要求之外,我从未见过提及任何服务器依赖项,所以我不知所措。我们迫切需要在这个项目上使用 HMVC,但我无法将我什至无法加载的东西推向市场。

为了进一步限制我们注入坏东西的可能性,我重新安装了 CI,重新加载了 HMVC 模块,没有碰其他任何东西……失败!完全相同的结果,在 CentOS 5.5 上出现相同错误的本地人上运行。

任何帮助是极大的赞赏...

更新

意识到错误只是一个通知(尽管我讨厌这样做),我关闭了错误报告只是为了看看发生了什么。它立即回到抛出 500 错误。我可以在 index.php 中放入 die() 语句并将输出输出到屏幕上——所以更麻烦的是我在 CentOS 中的 HMVC 模块完全失败,而不仅仅是一个通知。我将尝试通过系统 die() 并找到正在执行此操作的实际线路.. Joy..

Craig A Rodway 要求的 4 级 CI 日志文件

DEBUG - 2011-09-06 20:49:37 --> Config Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Hooks Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Utf8 Class Initialized
DEBUG - 2011-09-06 20:49:37 --> UTF-8 Support Enabled
DEBUG - 2011-09-06 20:49:37 --> URI Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Router Class Initialized
DEBUG - 2011-09-06 20:49:37 --> No URI present. Default controller set.
DEBUG - 2011-09-06 20:49:37 --> Output Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Security Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Input Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Global POST and COOKIE data sanitized
DEBUG - 2011-09-06 20:49:37 --> Language Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Language Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Config Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Loader Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Controller Class Initialized
DEBUG - 2011-09-06 20:49:37 --> Welcome MX_Controller Initialized
DEBUG - 2011-09-06 20:49:37 --> Loader Class Initialized
ERROR - 2011-09-06 20:49:37 --> Severity: Notice  --> Undefined property: CI::$db /home/www/qualcentral.com/application/third_party/MX/Controller.php 58

更新#2

好的,有两件事似乎导致了我的问题——我没有完全修复,但我现在可以在系统中工作。首先,在 Windows 机器上解压缩 HMVC,提交到 SVN,然后将其拉到 CentOS 完全 BORKED。当我通过 WGET 将所有内容直接下载到 CentOS 并在服务器上进行设置时,它工作得很好!很奇怪,但至少这是一种解决方法——不需要对 PHP 或 Apache 进行调整,我认为在初始过程中会出现一行结束或某些东西被劫持。

其次,当我使用 HMVC 模块时,我不能使用核心系统自动加载器来加载数据库。我可以在三合会中手动加载它,也可以使用三合会的 config/autoload.php 文件自动加载,但如果我尝试,核心系统会抛出 500。这是一个怪癖,而且很严重,但我可以绕过它。

再次感谢大家的建议,这只是一个奇怪的问题。

谢恩

4

1 回答 1

1

Undefined property: CI::$db

此错误表示您的数据库尚未加载。这似乎您的 autoload.php 文件没有加载它,或者其他什么。可能是数据库正在加载到 MY_Controller 中,现在已被替换。

此外,如果您使用的是最新的 HMVC,您可能会遇到困难,因为它正在开发用于 2.0.x 分支,而不是 1.7.x。这并不是说它不会起作用,而是说每个发布的新版本都不太可能。

于 2011-09-07T16:18:29.413 回答