1

我正在使用 Joomla 运行一个网站!2.5.9 7 个月。直到本周一切都很好。周一和今天(周五)网站因****_session表格损坏而无法运行。我没有机会查看有关错误的日志。

无论如何,我星期一修好了桌子,直到今天一切正常。今天它重复了同样的错误。然后我又修了。我不想桌子坏了,也不想再修了。

我想知道 Joomla 是否存在漏洞!或者服务器端还有其他东西。

4

3 回答 3

3

出于某种原因,我有时会收到此错误,因此我使用 cron 作业自动修复:

<?php

$sites = array('http://www.yoursite.com', 'http://www.yourothersite.com');
foreach($sites as $site) {
  $content = file_get_contents($site);
  if (strpos($content, 'error') !== false) {
    mail('myself@myself.com', 'Error found: '.$site,
         $site.' reported an error:<br/><br/>'.$content,
         'From: Myself <myself@myself.com>');
  }
  if (strpos($content, 'jtablesession::Store Failed') !== false) {
    // run repair table
    $con = mysql_connect('localhost', 'user', 'pass');
    mysql_select_db('yoursite_db_name', $con);
    // you might want to add an if here, if you have many sites to check
    mysql_query('REPAIR TABLE `yourprefix_session`', $con);
    mysql_close($con);
    mail('myself@myself.com', 'Repaired #__session', 'From: Myself <myself@myself.com>');
  }
}

?>

请记住,我仅将它用于 Joomla 1.5 站点。如果 2.5 或 3.0 搜索的错误不同,您可能需要更改它们。

于 2013-09-20T07:33:18.697 回答
3

我制作了一个页面,可以在崩溃时手动修复表格。

<?php
    //file = repair/index.php

    include '../configuration.php'; //has JConfig class

    $cfg = new JConfig();

    $mysqli = new mysqli($cfg->host, $cfg->user, $cfg->password, $cfg->db);

    if($mysqli->query('REPAIR TABLE prefix_session'))
        echo 'Hey!';
    else
        echo 'An error occured call zkanoca';
?>

当我调用http://example.com/repair时,它就可以了。

于 2013-09-20T11:47:44.460 回答
2

我还因为 MySQL 中损坏的“会话”表而丢失了一个站点。对于一个非常简单且可预测的问题,我发现的解决方案都太复杂了,如此处所述:

https://www.akeebabackup.com/documentation/admin-tools/database-tools.html

简单地说,会话表需要定期清理。一旦崩溃,就无法再使用PHPmyAdmin访问(由于表崩溃,无法访问)。由于该表已损坏,并且无法访问该站点,因此您也无法访问管理工具。

因此,通过 cpanel,使用 PHPmyAdmin,在数据库部分,在站点数据库的 SQL 选项卡中,我键入:

REPAIR TABLE [prefix]_session

然后点击Go

问题解决了。网站再次出现。

于 2014-12-30T09:08:06.310 回答