【发布时间】:2011-09-06 21:13:21
【问题描述】:
多年来,我一直在使用 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。这是一个怪癖,而且会加重病情,但我可以解决它。
再次感谢大家的建议,这只是一个奇怪的问题。
肖恩
【问题讨论】:
-
该错误看起来像是在尝试加载数据库,但它不能 - 因为您阻止了它的加载。所以这可能不是问题发生的地方。尝试将 application/config.php 中的 log_level 更改为 4,然后检查在 application/logs 文件夹中创建的文件,看看是否有任何关于出现问题的指针。
-
好电话,我就是这样做的,并且正在用相关的日志条目更新我的帖子——对我仍然没有帮助,但也许它会为某人指明正确的方向。
-
如果再次自动加载数据库,是否会得到与原来一样的结果?
-
不,奇怪的是,如果我加载 DB 类,我仍然在浏览器中得到 500,但日志条目在“加载器类初始化”条目之后停止,没有报告错误(所有调试)。跨度>
-
好的。很奇怪 :) 接下来我会看看你的开发环境和 CentOS 环境之间的区别。如果需要,设置可写文件系统权限?检查并比较两个系统的 phpinfo() 输出 - PHP 版本、加载的扩展等。
标签: php codeigniter centos hmvc