EEfaq论坛-赚客自留地

 找回密码
 免费注册
查看: 1293|回复: 7

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

[复制链接]
发表于 2013-5-20 21:05:55 | 显示全部楼层 |阅读模式
本帖最后由 忆往惜 于 2013-5-20 21:08 编辑

最近用朋友的空间搭了个wordpress
因为主机是IIS,确实遇到了问题,
所以建议大家尽量不要ISSphp的程序,问题真是不少。

下面三个问题几乎所有用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 ) );
找到这段代码后,在其后面添加以下代码:
  1. $phpmailer->FromName = 'WordPress';     //这个是发信的用户名
  2. $phpmailer->Host = 'smtp.exmail.qq.com';    //修改为你使用的SMTP服务器
  3. $phpmailer->Port = 25; //port: 25 (or 465 for ssl)默认25就可以了
  4. $phpmailer->Username = '[email protected]'; //修改为你的名字
  5. $phpmailer->Password = '******'; //修改为你的邮箱密码
  6. $phpmailer->From = ' [email protected] '; //你的邮箱
  7. $phpmailer->SMTPAuth = true;
  8. $phpmailer->SMTPSecure = ''; //tls or ssl   (port=25留空,465为ssl)
  9. $phpmailer->IsSMTP();
复制代码
用方法三终于解决了问题,够折腾的。
问题二:wordpress固定链接无法使用。
这个问题很普遍,之前我经常在本地搭建php环境,也遇到这种问题,原因是它的Apache 无法打Mod_Rewrite,本地搭建很容易解决,修改相关apache相关配置文件就可以了。但是使用人家的空间就不是你能随便更改的,所以我在网上找到了以下方法:

新建一个记事本,加入如下代码:

  1. [ISAPI_Rewrite]

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

  8. RewriteRule /sitemap.xml /sitemap.xml [L]
  9. RewriteRule /favicon.ico /favicon.ico [L]
  10. # For file-based wordpress content (i.e. theme), admin, etc.
  11. RewriteRule /wp-(.*) /wp-$1 [L]
  12. # For normal wordpress content, via index.php
  13. RewriteRule ^/$ /index.php [L]
  14. RewriteRule /(.*) /index.php/$1 [L]
复制代码
另存为httpd.ini,然后将这个文件上传至网站根目录,再到wp后台设置固定链接,发现可以使用了。

问题三:安装Google XMLSitemaps插件,写入sitemap文件时发生错误。
这个问题最容易解决,在插件配置中“自定义位置”(默认的是自动检查),将绝对路径的斜杠改为反斜杠,例如将“D:\wwwroot\haoren\web/sitemap.xml”改为“D:\wwwroot\haoren\web\sitemap.xml”就可以了。

评分

参与人数 1e币 +3 收起 理由
luguokankan + 3 認眞參與

查看全部评分

发表于 2013-5-20 21:15:06 | 显示全部楼层
进来学习了
回复 支持 反对

使用道具 举报

发表于 2013-5-20 22:18:20 | 显示全部楼层
目测楼主是技术高手,谢谢分享。
回复 支持 反对

使用道具 举报

发表于 2013-5-20 23:13:26 | 显示全部楼层
windows服务器怎么用的是apache呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-20 23:47:04 | 显示全部楼层

不是说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
目测楼主是技术高手,谢谢分享。

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

使用道具 举报

发表于 2013-5-21 07:12:45 | 显示全部楼层
lz有试下WP Mail SMTP吗?
最好别修改核心文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-21 09:28:31 | 显示全部楼层
luguokankan 发表于 2013-5-21 07:12
lz有试下WP Mail SMTP吗?
最好别修改核心文件

有试过,几乎常用的smtp插件都测试了,都不行,所以才找到了最后一个方法
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|联系我们|Archiver|手机版|小黑屋|EEfaq论坛

GMT+8, 2024-11-21 23:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表