本帖最后由 忆往惜 于 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相关配置文件就可以了。但是使用人家的空间就不是你能随便更改的,所以我在网上找到了以下方法:
新建一个记事本,加入如下代码:
- [ISAPI_Rewrite]
- # 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 [L]
- RewriteRule /favicon.ico /favicon.ico [L]
- # For file-based wordpress content (i.e. theme), admin, etc.
- RewriteRule /wp-(.*) /wp-$1 [L]
- # For normal wordpress content, via index.php
- RewriteRule ^/$ /index.php [L]
- RewriteRule /(.*) /index.php/$1 [L]
复制代码另存为httpd.ini,然后将这个文件上传至网站根目录,再到wp后台设置固定链接,发现可以使用了。
问题三:安装Google XMLSitemaps插件,写入sitemap文件时发生错误。 这个问题最容易解决,在插件配置中“自定义位置”(默认的是自动检查),将绝对路径的斜杠改为反斜杠,例如将“D:\wwwroot\haoren\web/sitemap.xml”改为“D:\wwwroot\haoren\web\sitemap.xml”就可以了。 |