我需要一些帮助,以前我没有遇到的错误,似乎无法find任何地方。
在一个PHP MVC框架(从教程),我有以下几点:
// Initiate the class $className = 'Controller_' . ucfirst($controller); if (class_exists($className)) { $controller = new $className($this->registry); }
$ className显示正确的类名(大小写也是正确的)。 但是当我运行它,我得到这个在Apache错误日志(没有PHP错误)
[Wed Mar 31 10:34:12 2010] [notice] child pid 987 exit signal Segmentation fault (11)
进程ID在每个调用中都不相同。 我在os x 10.6上运行PHP 5.3.0。 这个网站似乎在另一台Mac上运行在5.2.11上。 不太确定下一步去debugging它。 我想这可能是一个Apache的设置多达一个PHP错误或代码的问题…有什么build议下一步看什么?
该错误不会出现在注释该代码。 我也有大约15个其他的PHP网站运行没有问题。 包括使用相同的基础mvc框架的其他人
我记得有完全相同的问题。 如果我没有记错的话,问题就是recursion实例,即PHP内存不足,导致分段错误。 检查$ className的实例是否不在圈内。
尝试这个:
// Initiate the class $className = 'Controller_' . ucfirst($controller); if (class_exists($className)) { // construct the code string and evaluate it. $code='$controller = new ' . $className . '($this->registry);'; eval($code); }
我认为你的问题来自你自己的Mac。 如果你尝试从另一台电脑的网站,并没有得到错误,那就意味着你将需要重新安装你的PHP包。 有些时候你的php出现了问题(可能是更新,或者是因为新安装而被破坏的链接)
希望这会帮助你。
尝试在你的类名variables周围使用花括号。 请参阅$控制器分配行中的以下内容。
$className = 'Controller_' . ucfirst($controller); if (class_exists($className)) { $controller = new ${$className}($this->registry); }