我不确定这是否与PHP代码/ Joomla插件/组件或服务器问题有关,以便在serverfault发布我的问题。
我有一个运行CentOS版本6.4(最终版)的专用服务器和带有[Apache / 2.2.24(Unix)PHP / 5.2.17]的CPanel 11.38.1(版本15),最近我们进行了暴力攻击系统挂起“HANG:chkservd on server”等消息。设置DenyHosts并更改ssh默认端口后,服务器稳定了几天,直到它开始突然挂起,日志中没有任何特定错误,也没有任何电子邮件通知。
服务器只运行一个网站,但有一些流量(每天大约2000个访问者)和一个大的Joomla数据库。自2013年3月以来,该网站一直运行良好,直到两周前。
经过调查,我注意到public_html(默认joomla站点目录)大小下的error_log超过200MB,但没有特定的错误消息,只有日期/时间和零“0”的行!
[24-Jul-2013 12:09:18] 0
[24-Jul-2013 12:09:18] 0
[24-Jul-2013 12:09:18] 0
[24-Jul-2013 12:09:19] 0
[24-Jul-2013 12:09:19] 0
[24-Jul-2013 12:09:19] 0
[24-Jul-2013 12:09:19] 0
[24-Jul-2013 12:09:20] 0
[24-Jul-2013 12:09:26] 0
[24-Jul-2013 12:09:26] 0
[24-Jul-2013 12:09:30] 0
几乎每一秒,上面那些千行! 有时网站崩溃时出现“jos-Error:Application Instantiation Error”,有时则出现错误:
PHP致命错误:在...中的非对象上调用成员函数get()
这是由于数据库问题,当joomla尝试从数据库加载params并且失败时。
我已在安装了apache和php的本地Windows服务器计算机上设置了该站点的备份[Apache / 2.2.19(Win32)PHP / 5.3.6]并且每个站点调用也会产生这些零“0”错误在\ Apache2 \ logs \ error.log中有一些更多细节,如:
[Wed Jul 24 14:42:32 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/
[Wed Jul 24 14:42:32 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/
[Wed Jul 24 14:42:32 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/
[Wed Jul 24 14:42:33 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/
[Wed Jul 24 14:42:33 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/
[Wed Jul 24 14:42:33 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/
[Wed Jul 24 14:42:56 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/mousiki
[Wed Jul 24 14:42:56 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/mousiki
[Wed Jul 24 14:42:56 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/mousiki
[Wed Jul 24 14:42:57 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/mousiki
[Wed Jul 24 14:42:57 2013] [error] [client 192.168.1.66] 0, referer: http://virtdev.ose.domain.com/mousiki
因此我认为它与服务器无关,但Joomla网站与插件/组件相关。
此外,我们使用在线网站扫描程序扫描网站,并使用防病毒工具进行普通文件搜索,进行机器人注射,但没有可能的结果。
我们如何找到导致这些零错误的原因?
答案 0 :(得分:1)
最后我发现了导致这些零错误的原因。
首先,为了找到产生这些错误的内容,我对php函数error_log()
(http://php.net/manual/en/function.error-log.php)的所有站点php文件进行了grep,它直接写入字符串参数消息而没有任何其他文件名,行号等信息。结果我看到Joomla插件中有error_log(0);
启用了它。打开插件php文件后,我发现这是我的补充,以便调试一些东西,我已经完全忘记了那里。因此,删除该行后不再有零字符错误。我甚至不记得那次通过这个电话想要实现的目标,它根本没有任何意义。也许我想使用error_reporting(0)
来禁用所有错误并输入错误。
为了清楚起见,这些错误与服务器崩溃/挂起无关,也不负责任。我通过创建新数据库并恢复备份文件来修复崩溃,因此,旧数据库已损坏。
现在,24小时后,没有崩溃/挂起,一切都恢复正常。
修改强>
经过一些进一步的调查后,我意识到这个error_log(0)
不是我的补充,当我安装插件时它已经存在了!插件/组件是 Joooid ,是Joomla(http://www.joooid.com)的Android客户端。代码位于joooidcontent.php内的plg_joooidcontent:
...
/**
* @since 1.6
*/
public function onContentPrepare($context, &$row, &$params, $page=0)
{
error_log(0);
//echo "<pre>";
$row ->text = $this->executeTokens($row->text);
//print_r($row);
//die();
}
...
即使是现在也有最新版本。我会给他们发一个这个问题的链接,以便通知他们。