我们的开发服务器中安装了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
时不带参数。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
吗?如果最后一个是答案:我应该把这些电话放在哪里?
答案 0 :(得分:1)
您只需将mysql_real_escape_string
替换为widget.php文件中的$this->db->esc_like
。