关于在阿里云弹性web上wordpress密码重置问题

旧地址:http://blog.canself.com/resetwordpresspassword/

来源:前阵子合并之前的两个wordpress网站,想用两个用户区分下,建了新用户无法修改密码,只能生成,就想着利用密码重置来更新密码。

问题1:由于博客托管在阿里云弹性web上,在重置密码时,始终提示错误【具体是啥忘了】,就是发不出密码重置邮件。

解决方案:方法涉及修改wordpress代码,升级后需重新修改。

1、打开/wp-includes/class-smtp.php,查找到如下代码【我的wordpress版本在276-283行,其他版本也就在附近】

1
2
3
4
5
6
7
8
$this->smtp_conn = @stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
);

2、将其修改为如下代码:

1
$this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout);

3、安装WP SMTP插件,配置发件人信息【之前还看到直接在步骤2的基础上改代码的-没生效】——此插件很久没有更新了,有类似的都可以试试。


问题2:解决问题1后,遇上另一个问题,每次重置密码的链接打开后,都会提示无效;

原因:每次密码重置的链接首尾都带有<>。

解决方案:修改wordpress根目录wp-login.php文件

1、打开wp-login.php文件,查找如下代码,在340行左右【不同版本有所差别,上下找下】

1
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";

2、去掉首尾<>,代码如下:

1
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');

完成上面的部分后,终于可以正确的重设密码了。

参考链接: