云虚拟主机的WordPress程序发信失败
问题描述
云虚拟主机的WordPress程序发信失败。
问题原因
WordPress程序使用的不是fsockopen函数发信,而是使用stream_socket_client函数发信,如果PHP函数在云虚拟主机中被禁用,则会导致发信失败。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
- 可以通过修改WordPress程序中
wp-includes/class-smtp.php
文件,找到以下内容。$this->smtp_conn = @stream_socket_client(
系统显示类似如下。
$host . ":" . $port,
$errno,
$errstr,
$timeout,
STREAM_CLIENT_CONNECT,
$socket_context
); - 使用
/**
和*/
将以上内容注释,使用以下内容代替该部分。$this->smtp_conn = fsockopen($host, $port, $errno, $errstr);
系统显示类似如下。说明:WordPress4.3.1版本已经支持自动检测是否支持stream_socket_client函数,如果不支持会自动使用fsockopen进行发信,因此4.3.1之后版本不需要在修改此文件,在WordPress应用中心安装Easy WP SMTP Settings插件,配置好就可以直接发送邮件了。
适用于
- 云虚拟主机