CodeIgniter模块化扩展在CentOS上失败


CodeIgniter Modular Extension Broken on CentOS

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

在我们的本地安装上使用完全相同的SVN repo并将其拉出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模块,没有触及其他任何东西…失败!

任何帮助都是非常感谢的…

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

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,使其完全失效。当我通过WGET直接将所有内容拉到CentOS并在服务器上设置时,它工作得很好!非常奇怪,但至少这是一个解决方案-不需要对PHP或Apache进行调整,我认为在初始过程中行结束或其他东西被劫持了。

其次,当我使用HMVC模块时,我不能使用核心系统自动加载器来加载数据库。我可以在triad中手动加载它,也可以使用triad的config/autolload .php文件自动加载,但如果我尝试的话,核心系统会抛出500。这是一个怪癖,很烦人,但我能解决它。

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

Shane

Undefined property: CI::$db

此错误表示您的数据库尚未加载。这看起来就像你的autoload.php文件没有加载它,或者别的什么。可能数据库是在MY_Controller中加载的,现在已经被替换了。

同样,如果你正在使用最新的HMVC,你可能会很挣扎,因为它正在开发与2.0工作。X分支,而不是1.7.x。这并不是说它不会工作,而是说它不太可能与每个新版本发布。