【问题标题】:How can I setup the database for Widgetkit plugin in Wordpress?如何在 Wordpress 中为 Widgetkit 插件设置数据库?
【发布时间】:2014-11-14 15:46:18
【问题描述】:

我们的开发服务器中安装了 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行,referer: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?如果最后一个是答案:我应该把这样的电话放在哪里?

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    您可以在 widget.php 文件中将 mysql_real_escape_string 替换为 $this->db->esc_like

    【讨论】:

    • 您无需在答案中填写您的联系方式。这不是和电子邮件!
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2014-06-23
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多