解决Godaddy windows主机安装WordPress的几个大问题

这几天我们QQ群(群号:61218137)决定合办一个博客,共同维护。于是乎,我就在godaddy上买了个域名,送了10G空间。打算用这个10G空间搭建WP,目前如各位所见,已经搭建成功。从国庆就开始折腾,折腾了好几天,这就折腾的过程给大伙儿汇报一下。

Godaddy免费主机情况介绍:

1、Linux主机。这类主机想必是WP的最爱了,但是很可惜。。。Linux主机是有广告的,而且不是那种文字广告,是很变态的CSS浮动广告。虽然 网上去广告的方法一大堆,但是只是做到不显示广告而已,实际上广告代码还是在你的页面中。这会造成什么结果?基本上后台无法正常使用,连编辑文章都困难, 前台Bug一堆,无法正常浏览页面。所以,可以放弃在Godaddy赠送的Linux主机上搭建博客的想法了。。。

2、Windows主机。这类主机对WP的兼容性虽然不如Linux好,但是折腾一下,还是可以实现99%的功能。需要注意的是,Windows主机是没 有广告的,这几乎就可以秒杀Linux主机。不过如何选择Windows主机,也是一个要注意的问题,就本人以及网上的经验,选在Windows主机时, 在后台配置为:ASP 1.1 + IIS 7.0 可以保证没有广告。

Godaddy 免费Windows主机情况介绍:

有10G空间,300G流量。10个mysql数据库,还有2个SQL Sever,1个Access。当然,WP用mysql就行了。。。但是不同于Linux主机,Windows主机不显式支持Gzip(折腾可解决),还 有可能出现500错误(折腾可解决),不支持allow url fopen(折腾可解决),不支持中文标签、中文目录分类、伪静态(折腾可解决),不支持mail()函数(这个是难点,不过折腾也可基本解决),不支持 Zend Optimizer(无法解决)。

好了,基本情况汇报到这里,现在讲讲怎么解决。

1、解决Gzip、500错误、allow url fopen、伪静态、中文目录、中文标签等问题。

首先,在godaddy的后台管理中,打开:【File Manager】,可以看到一个[Root]文件夹,这就是根文件夹咯,勾上这个文件夹,选择【Permissions】,把"read" 和"write"以及那个"reset all children to inherit"都勾上。解释一下,前面的read、write即是给根文件夹读写的权限,后面一项则是让所有根文件夹下的子文件夹继承此权限;好了,500错误的问题解决了。

注:以上方法不正确,正确方法参见本网站另一篇博文《win空间根目录可以设置写入权限的》

另外的几个问题可以通过两个配置文件得以解决。

新建php5.ini文件,用来配置服务器的PHP环境的,在php5.ini中复制如下内容:

register_globals = Off
allow_url_fopen = On
memory_limit = 50M
max_execution_time = 120
max_input_time = 60
post_max_size = 8M
file_uploads = On
upload_max_filesize = 128M
extension_dir = "c:php5ext"
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_gd2.dll
extension=php_sockets.dll
extension=php_mbstring.dll
session.save_path = "d:/temp/tmp"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_path = /
session.serialize_handler = php
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
zlib.output_compression = On
zlib.output_compression_level = 9
至此,allow url fopen、gzip的问题解决了。现在来解决支持中文标签、中文目录,以及伪静态的问题。新建一个web.config文件,里面内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 17">
<match url="^archiver/((fid|tid)-[w-]+.html)$" ignoreCase="false"/>
<action type="Rewrite" url="archiver/index.php?{R:1}" appendQueryString="false"/>
</rule>
<rule name="Imported Rule 18">
<match url="^forum-([0-9]+)-([0-9]+).html$" ignoreCase="false"/>
<action type="Rewrite" url="forumdisplay.php?fid={R:1}&amp;page={R:2}" appendQueryString="false"/>
</rule>
<rule name="Imported Rule 19">
<match url="^thread-([0-9]+)-([0-9]+)-([0-9]+).html$" ignoreCase="false"/>
<action type="Rewrite" url="viewthread.php?tid={R:1}&amp;extra=page%3D{R:3}&amp;page={R:2}" appendQueryString="false"/>
</rule>
<rule name="Imported Rule 20">
<match url="^space-(username|uid)-(.+).html$" ignoreCase="false"/>
<action type="Rewrite" url="space.php?{R:1}={R:2}" appendQueryString="false"/>
</rule>
<rule name="Imported Rule 21">
<match url="^tag-(.+).html$" ignoreCase="false"/>
<action type="Rewrite" url="tag.php?name={R:1}" appendQueryString="false"/>
</rule>
<rule name="ChineseURL" stopProcessing="true">
<match url="^archives/(tag|category)/(.*)$" />
<action type="Rewrite" url="chineseurl.php"/>
</rule>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
<httpErrors errorMode="Detailed"/>
<asp scriptErrorSentToBrowser="true"/>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/>
</system.web>
</configuration>
新建一个chineseurl.php,里面内容如下:
<?php
// IIS Mod-Rewrite
if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
}
// IIS Isapi_Rewrite
else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
else
{
// Use ORIG_PATH_INFO if there is no PATH_INFO
if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
if ( isset($_SERVER['PATH_INFO']) ) {
if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
else
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
}
// Append the query string if it exists and isn't null
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
}
require("index.php");
?>
这样,中文标签、中文目录分类、伪静态的问题也解决了。需要注意的是,本人在测试中发现一个很诡异的事情,就是虽然支持中文标签,但是标签的名字如果是 “中文标签”或者“标签”,就会出现404错误。。。不知何故,我原来以为是哪里出错了,弄了半天,还下载了个支持中文标签的simple tag。。。结果还是如此,最后把标签名字换了一下,就行了。
2、现在我们来解决win主机中不支持mail()函数的问题。众所周知,这是一个极其严重的问题,往小了说,不能实现评论回复邮件,往大了说,新用户无法注册(因为WP在每次注册新用户时都会发送邮件告诉密码,mail()函数没了,邮件就无法发送,新用户就无法知道自己的密码!)
google了一圈。终于让我找到方法,有一个插件,Configure SMTP, 这个插件可以配置SMTP环境代替mail()函数发送邮件。不过,用godaddy免费主机的各位,要注意了。godaddy对SMTP是严格限制了 的,不能使用第三方SMTP(也就是说,无法使用gmail、hotmail等邮箱发送邮件,如果你在 Configure SMTP 中这样配置了,也是发送不出去的),只能使用Godaddy自己的未加密服务器发送,而且每天只能发送250封邮件,而且发送之间的间隔不能太短,要不然 会失败的哦!现在就来讲讲具体的配置,安装好了 Configure SMTP 插件之后,这样配置就行了:“SMTP host”这一栏,填写:relay-hosting.secureserver.net;“SMTP port”这一栏,填写:25。其他的都不要动!这样设置了之后,基本上就能发送评论回复邮件了。
但是还有个问题,就是新用户注册的时候,有很大机率不能成功发送通知邮件。解决这个问题,应该这样做:首先,我们要实现用户注册之后,密码直接显示出来。在服务器上找到?/wp-login.php?文件,下载回来,先备份,然后修改。修改的内容:
查找:
wp_new_user_notification( $user_id, $user_pass );
在此句下面新加两行:
setcookie("u", $user_login);
setcookie("user_pass", $user_pass);
查找:
$errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
将此句注释掉,然后加上一行:
$errors->add('registered', __(' 注册成功!<br /><br />用户名:'.$_COOKIE["u"].'<br /><br />密码:<font color = "red">'.$_COOKIE["user_pass"].'</font> <br />(登录后请立即修改!)'), 'message');
这样,就实现了用户注册之后密码直接显示出来。即使邮件没有发送成功,也没有关系。
现在,我们再来解决发送邮件的问题,上面已经说了,Godaddy的免费主机对SMTP限制很严格,邮件发送的间隔时间太短是不行的。那么在新用户注册 的时候,实际上系统是连续发送了两次邮件,一次是给管理员,一次是给用户,几乎没有间隔,难怪会被Godaddy Ban掉。我们就将发送给管理员的那次屏蔽掉就行了。方法:找到?/wp-includes/pluggable.php,将此句:
@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);
和此句
wp_mail(get_option('admin_email'), sprintf(__('[%s] Password Lost/Changed'), $blogname), $message);
http://www.tobelin.com/archives/117.html

注释掉就可以了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
门座式起重机

win空间根目录可以设置写入权限的

2012-7-14 20:38:54

门座式起重机

用putty在vps上安装lnmp一件安装包,实现web环境教程(转自vpser.net)

2012-7-17 20:40:12

17 条回复 A文章作者 M管理员
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索