WordPress不需要任何修改就可以运行在阿里云的ACE上。目前ACE免费、快速、稳定,种种优势吸引着广大WordPress用户。目前这个网站运行在ACE上,从自己的VPS迁移过来后,一切运行良好,除了不能发邮件。在它自己的VPS上,我一直使用Cimy Swift SMTP作为插件,通过SMTP发送邮件,但是到了阿里云上,一直提示:SMTP connect()失败。从字面上看,邮件服务器根本无法连接。
WordPress在ACE上发不了邮件的原因是阿里云后台发了一个工单,回复如下:
PHP应用使用http/https/smtp (curl/fsockopen)等协议,不设置代理:stream_socket_client中不能设置代理选项,建议替换为fsockpoint或者curl stream_socket_client函数中的参数$flags只能是STREAM_CLIENT_CONNECT,其中$context会被忽略;参数:$remote_socket,只能是tcp或者ssl协议,其他不支持;
从回复中可以看出,阿里云ACE是可以发邮件的,但是和我们平时发邮件的方式不一样。根据阿里云的建议,我们需要将插件中的stream_socket_client替换为fsockopen。既然可以替换,那么这两个功能的作用基本相似。
修改Cimy Swift SMTP插件,使其可以在阿里云ACE上发送邮件。搜索Cimy Swift SMTP插件的代码,原来有一个stream_socket_client函数,在Cimy-Swift-SMTP/Swift/lib/Classes/Swift/Transport/stream buffer . PHP的第263行:
$ this-& gt;_ stream = @ stream _ socket _ client($host。’:’.$ this-& gt;_params[‘port’],$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,STREAM _ context _ create($ options));我们只需要用下面一行代码替换这一行代码:
$ this-& gt;_stream = @fsockopen($host,$ this-& gt;_params[‘port’],$errno,$errstr,$ time out);保存,将SVN提交到版本库,等待一分钟左右,然后在应用重新部署后,从设置Cimy Swift SMTP插件的地方进行测试。我们会发现邮件很快就发出去了,然后测试评论回复,找回密码,就能很快找到邮件。
为了方便大家,我把修改后的插件直接打包了。这是下载链接。需要的朋友可以点击下面的按钮下载。
点击下载
要想更快,就得用ECS云服务器ACE的速度。对于日PV不到100的网站,速度足够了。如果网站流量比较大,ACE的速度跟不上。这时候根据自己的网站流量,可以直接购买阿里云ECS服务器,原本放在OSS和RDS上的数据不用移动,直接配置即可。
通过下面的链接购买阿里云ECS服务器可以获得15%的优惠券。
购买阿里云服务器
2015/05/19更新:王湾的虚拟主机也有和ACE一样的问题。我想知道他们是否使用相同的系统。经过测试,上述方法也可以用在王湾的虚拟主机上。