忆往惜 发表于 2013-5-20 21:05:55

win主机搭wp遇到三个问题的解决方法

本帖最后由 忆往惜 于 2013-5-20 21:08 编辑

最近用朋友的空间搭了个wordpress,
因为主机是IIS,确实遇到了问题,
所以建议大家尽量不要ISS搭php的程序,问题真是不少。
下面三个问题几乎所有用win空间的人搭建的wp都出现过,下面分享下我找到的解决方法。 问题一:邮件发不出(当有人留言时,收不到提示审批邮件)据查找相关资料,这个问题是因为IIS服务器不支持main 函数原因造成的,大多数国内的空间都存在这个问题。请先看网上使用得最多的解决方法一和方法二,如果没有效或者闲麻烦,请直接看方法三,肯定有效哦。 方法一:通过插件(如:ConfigureSMTP)配置 SMTP 服务器,然后使用我们带有smtp功能的邮箱(如QQ,网易邮箱,gmail等)作为中介邮箱发送邮件。(网上使用这个方法很多,搜索一下大把,这里我就不复制人家的了)但很不幸,无论我怎么配置,怎么换smtp插件测试都无效,显示的是Couldnot connect to SMTP host,所以又折腾了,据查找相关资料,又应该是fsockopen()函数被禁用的原因,如果你也遇到这问题,请查看方法二。 方法二:用pfsockopen()函数取代掉 fsockopen()来发送邮件。具体步骤是找到wp-includes/class.smtp.php文件找到“@fsockopen”,改成“ @pfsockopen”,也就是多加了一个字母p,大部份人到此都解决问题。但还是没有解决得了,难道是pfsockopen这个函数也被禁用了?好吧,我又使用了stream_socket_client()这个函数来代替,当然这个函数的形参调用位置是不一样的,这点我也注意到了,修改时特地按照这函数的参数顺序改了。但是,还是不行?难道是PHP版本低于5.0,没有stream_socket_client()?好吧,我又百度了,按照前人经验,自定义了这样一个函数:function b_fsockopen($host, $port, &$errno, &$errstr, $timeout) {};然后再调用,但还是不行,难道我真的要崩溃了么?没有,结果让我找了更简的方法三。
方法三:STMP插件就不用了,找到wp-includes/pluggable.php文件,搜索以下代码:do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
找到这段代码后,在其后面添加以下代码:$phpmailer->FromName = 'WordPress';   //这个是发信的用户名
$phpmailer->Host = 'smtp.exmail.qq.com';    //修改为你使用的SMTP服务器
$phpmailer->Port = 25; //port: 25 (or 465 for ssl)默认25就可以了
$phpmailer->Username = '[email protected]'; //修改为你的名字
$phpmailer->Password = '******'; //修改为你的邮箱密码
$phpmailer->From = ' [email protected] '; //你的邮箱
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = ''; //tls or ssl   (port=25留空,465为ssl)
$phpmailer->IsSMTP();
用方法三终于解决了问题,够折腾的。 问题二:wordpress固定链接无法使用。这个问题很普遍,之前我经常在本地搭建php环境,也遇到这种问题,原因是它的Apache 无法打Mod_Rewrite,本地搭建很容易解决,修改相关apache相关配置文件就可以了。但是使用人家的空间就不是你能随便更改的,所以我在网上找到了以下方法:
新建一个记事本,加入如下代码:


# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through

RewriteRule /sitemap.xml /sitemap.xml
RewriteRule /favicon.ico /favicon.ico
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php
RewriteRule /(.*) /index.php/$1 另存为httpd.ini,然后将这个文件上传至网站根目录,再到wp后台设置固定链接,发现可以使用了。
问题三:安装Google XMLSitemaps插件,写入sitemap文件时发生错误。这个问题最容易解决,在插件配置中“自定义位置”(默认的是自动检查),将绝对路径的斜杠改为反斜杠,例如将“D:\wwwroot\haoren\web/sitemap.xml”改为“D:\wwwroot\haoren\web\sitemap.xml”就可以了。

sanya 发表于 2013-5-20 21:15:06

进来学习了

浮沉 发表于 2013-5-20 22:18:20

目测楼主是技术高手,谢谢分享。

jayhkun 发表于 2013-5-20 23:13:26

windows服务器怎么用的是apache呢?

忆往惜 发表于 2013-5-20 23:47:04

jayhkun 发表于 2013-5-20 23:13 static/image/common/back.gif
windows服务器怎么用的是apache呢?
不是说win服务器有apache,是说在本地搭建模拟的Apache, 比如我最常用APMServ5.2.6来搭建php环境,如果要实现伪静态,必须要找到 APMServ5.2.6\Apache\conf\httpd.conf,这个Apache配置文件,将AllowOverride None改为 AllowOverride Options FileInfo ,并且重启模拟的Apache才会生效,要不然默认伪静态也是用不了的

忆往惜 发表于 2013-5-20 23:50:44

浮沉 发表于 2013-5-20 22:18 static/image/common/back.gif
目测楼主是技术高手,谢谢分享。

我不是高手,非常菜鸟,读书的候有学过C语言,后来发现php竟然跟C差不多,并且没C那么严谨,属于弱类型语言,所以看得懂一些PHP代码,太深也是不懂的:lol

luguokankan 发表于 2013-5-21 07:12:45

lz有试下WP Mail SMTP吗?
最好别修改核心文件

忆往惜 发表于 2013-5-21 09:28:31

luguokankan 发表于 2013-5-21 07:12 static/image/common/back.gif
lz有试下WP Mail SMTP吗?
最好别修改核心文件

有试过,几乎常用的smtp插件都测试了,都不行,所以才找到了最后一个方法
页: [1]
查看完整版本: win主机搭wp遇到三个问题的解决方法