为啥 Wordpress 会创建一个巨大的 error_log 文件?

Posted

技术标签:

【中文标题】为啥 Wordpress 会创建一个巨大的 error_log 文件?【英文标题】:Why is Wordpress creating a giant error_log file?为什么 Wordpress 会创建一个巨大的 error_log 文件? 【发布时间】:2017-03-20 08:56:58 【问题描述】:

我有一个小型 Wordpress 网站,托管在我的共享 Hostgator 服务器上。我没有太在意它,因为网站运行良好,直到最近我注意到根文件夹中有一个 ~40GB 的错误日志文件。我无法打开该文件,因此我将其删除并等待该文件再次出现。几秒钟后文件又出现了,里面有这行:

[2016 年 11 月 7 日 04:26:22] WordPress 数据库错误 DELETE 命令拒绝用户 'HIDDEN_DATABASE_NAME'@'localhost' 查询表 'sv_options' 删除来自 sv_options WHERE option_name = '_transient_doing_cron'由delete_transient,delete_option制作

我已在 phpMyAdmin 中运行修复和优化,但此行仍大约每 2 分钟添加到文件中。我应该如何找到导致此错误的原因?我不是专家,但我可以在 cPanel 中找到自己的方法。

【问题讨论】:

这很自我解释...database error DELETE command denied to user 'HIDDEN_DATABASE_NAME'@'localhost' 即尝试执行 DELETE 查询的用户没有执行此操作的权限。 【参考方案1】:

从错误看来,试图执行DELETEmysql 用户没有这样做的权限。您要做的就是授予该用户权限,例如:

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
FLUSH PRIVILEGES;

这应该会停止向您的日志添加错误。更多关于MySQL grant and privileges的参考

您还可以使用以下 sql 在 phpmyadmin 中查看用户的所有权限

show grants for myuser@'localhost';

注意:以上语句将所有权限授予一个用户,从安全角度来看这不是一个好主意。由于错误是关于 DELETE 的,您可以只给用户删除权限(或者如果需要也可以选择、更新、插入)

GRANT DELETE ON mydb.* to myuser@'%' identified by 'mypasswd';

【讨论】:

我永远不会授予所有权限,只会授予需要的权限。应用程序不应拥有创建用户或更改权限的权限。 @ChristianGollhardt 我同意。我也不会这样做,我会记下我的回答。 在我尝试这个之前,有没有办法找到正在尝试执行删除的进程?在不知道为什么会发生这种情况的情况下,我不愿意授予此特权。 我会从 cronjobs 或一些自动化任务开始。似乎操作正在不停地运行..检查它们。还要检查插件..

以上是关于为啥 Wordpress 会创建一个巨大的 error_log 文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用serde-xml-rs反序列化XML会创建Err(重复字段`$ value`)

为啥 React.createElement() 会创建一个对象?

为啥我的函数每次调用时都会创建一个新对象?

为啥 GridControl 在执行后会创建一个额外的列/空间?

为啥hibernate会创建一个连接表和一个连接列?

Django 为啥我应用迁移时会创建一个字段?