为什么是Joomla!崩溃PHP


Why does Joomla! crash PHP?

我正在使用一个定制的Joomla!2.5.8应用程序,我正在Eclipse中逐步完成代码。我正在执行的代码位于myapp/librarys/joomla/plugin/helper.php中,并且位于JPluginHelper::_import函数中。有问题的代码如下所示:

if ($pathExists || file_exists($legacypath))
{
    $path = $pathExists ? $path : $legacypath;
    if (!isset($paths[$path]))
    {
        require_once $path;
    }
    $paths[$path] = true;

问题代码是require_once行。$path变量包含我的系统上的一个文件的名称,在发生任何其他事情之前,我已经在文件中设置了断点和日志记录,但该代码永远不会执行,断点也永远不会被命中。

该行之前的调用堆栈如下所示:

myapp/libraries/joomla/plugin/helper.php.JPluginHelper::_import() : lineno 171
myapp/libraries/joomla/plugin/helper.php.JPluginHelper::importPlugin() : lineno 125
myapp/components/com_content/views/article/view.html.php.ContentViewArticle->display() : lineno 123
myapp/libraries/joomla/application/component/controller.php.JController->display() : lineno 722
myapp/components/com_content/controller.php.ContentController->display() : lineno 74
myapp/libraries/joomla/application/component/controller.php.JController->execute() : lineno 761
myapp/components/com_content/content.php.require_once() : lineno 16
myapp/libraries/joomla/application/component/helper.php.JComponentHelper::executeComponent() : lineno 383
myapp/libraries/joomla/application/component/helper.php.JComponentHelper::renderComponent() : lineno 351
myapp/includes/application.php.JSite->dispatch() : lineno 197
myapp/index.php.{main}() : lineno 44

然后,当我尝试进入require_once位时,调用堆栈如下所示:

myapp/libraries/joomla/session/storage/database.php.JSessionStorageDatabase->write() : lineno 71
myapp/libraries/joomla/session/storage/database.php.JPluginHelper::_import() : lineno 0
myapp/libraries/joomla/plugin/helper.php.JPluginHelper::importPlugin() : lineno 125
myapp/components/com_content/views/article/view.html.php.ContentViewArticle->display() : lineno 123
myapp/libraries/joomla/application/component/controller.php.JController->display() : lineno 722
myapp/components/com_content/controller.php.ContentController->display() : lineno 74
myapp/libraries/joomla/application/component/controller.php.JController->execute() : lineno 761
myapp/components/com_content/content.php.require_once() : lineno 16
myapp/libraries/joomla/application/component/helper.php.JComponentHelper::executeComponent() : lineno 383
myapp/libraries/joomla/application/component/helper.php.JComponentHelper::renderComponent() : lineno 351
myapp/includes/application.php.JSite->dispatch() : lineno 197
myapp/index.php.{main}() : lineno 44

为了使其真正清楚,myapp/libraries/joomla/plugin/helper.php.JPluginHelper::_import()帧被myapp/libraries/joomla/session/storage/database.php.JPluginHelper::_import()取代。PHP放弃了,根本不提供日志记录。我看不到网站本身的任何东西。

我在Ubuntu上,使用Apache2、PHP5和XDebug。XDebug是否处于活动状态并不重要。

以前有人遇到过这种事吗?我真的不想回到标准的Joomla!安装,并逐步重新导入模块,但如果这是我必须做的。。。

我认为这是因为:

===>数据库包含一个插件的条目,而该插件的文件不存在,当joomla需要这些文件时,却找不到该插件的任何文件。

你能做什么:

===>您必须转到joomla需要文件的行(正如您在上面提到的"JPluginHelper::_import"),然后打印路径。通过这样做,您将看到所有必需的路径(在浏览器中),最后一个路径将看到出现错误的路径。

====>检查文件是否存在。

====>现在在扩展表中找到该插件的条目,并将其设置为"0"。