如何在Wordpress中为Widgetkit插件设置数据库?

时间:2014-11-14 15:46:19

标签: php mysql wordpress

我们的开发服务器中安装了Wordpress 4.0。我们安装了Widgetkit(付费版本),并且已经配置了wordpress数据库(这意味着:WP安装可以完成,没有任何问题,我们可以访问管理后端并成功登录)。

但是,在尝试创建幻灯片(或图库)时,它不起作用(它不存储在数据库中)。阅读完日志(apache错误日志)后,我看到了这个错误:

  

PHP警告:mysql_real_escape_string():在/path/to/server/www/wp-content-plugins/widgetkit/helpers/widget.php中拒绝用户“myserverstartuser”@“localhost”(使用密码:NO)的访问权限在第90行,引用者:http://my.server.dev/wp-admin/admin.php?page=widgetkit&task=save_slideshow

myserverstartuser代表用于启动服务器的linux用户;默认为www-data)。

我在插件中找到了这样一行并看到了:

'post_content' => mysql_real_escape_string(json_encode($data)),

这不是一个完整的路线,而是一个陈述的一部分。但问题很明显:

  • 没有为mysql_real_escape_string函数传递链接,因此尝试建立和使用新链接。另外,之前的链接没有打开。
  • 要建立链接,调用mysql_connect时不带参数。
  • 这样的调用需要正确的参数(与WP安装中的参数相同),并且由于调用没有参数,因此每个参数都填充了默认值(从ini_get获得的值)。
  • [在我注意到的整个插件文件夹中搜索后]插件本身没有调用ini_set以确保mysql_connect的默认值与wordpress数据库配置中的值匹配。

AFAIK不推荐使用mysql扩展,但似乎这个插件使用它。 The documentation for mysql_connect列出了我正在谈论的ini值。

这意味着:mysql_real_escape_string找不到任何链接,因此它尝试使用ini值打开一个新链接。插件永远不会设置这样的ini值。这意味着,除非我遗漏了某些内容,否则该插件不会链接到实际的Wordpress数据库设置。

问题:我说的是完全正确的吗?我是否需要下载将数据库配置设置为mysql扩展的默认ini值的内容?或者我在插件配置中遗漏了什么?或者我应该为数据库配置中的每个参数手动调用ini_set吗?如果最后一个是答案:我应该把这些电话放在哪里?

1 个答案:

答案 0 :(得分:1)

您只需将mysql_real_escape_string替换为widget.php文件中的$this->db->esc_like