本帖最後由 憶往惜 於 2013-5-20 21:08 編輯 " u" f4 |' i+ t. j
1 y; d p/ F8 o* u" f& n
最近用朋友的空間搭了個wordpress,
9 g3 ~1 t! j! C* q4 ^. _因為主機是IIS,確實遇到了問題,
9 }! {$ U3 f7 X) h所以建議大家盡量不要ISS搭php的程序,問題真是不少。 4 N# F" j3 ]- @# |. R8 J7 e
下面三個問題幾乎所有用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) {};然後再調用,但還是不行,難道我真的要崩潰了麼?沒有,結果讓我找了更簡的方法三。 . s Q/ b k5 ^: g
方法三:STMP插件就不用了,找到wp-includes/pluggable.php文件,搜索以下代碼:do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) );
4 ~8 _- Y y2 b# ?+ p. Y* I- H* P: k找到這段代碼後,在其後面添加以下代碼:- $phpmailer->FromName = 'WordPress'; //這個是發信的用戶名
/ t5 [6 Z- P6 s# y9 w8 I$ I7 w. a - $phpmailer->Host = 'smtp.exmail.qq.com'; //修改為你使用的SMTP服務器7 [% S7 \' k y: ]( h7 }2 b; c0 {0 v
- $phpmailer->Port = 25; //port: 25 (or 465 for ssl)默認25就可以了! l: L, D7 t8 |2 z' V6 |' V
- $phpmailer->Username = '[email protected]/old'; //修改為你的名字9 k i; [. ]! P4 |; J
- $phpmailer->Password = '******'; //修改為你的郵箱密碼
$ A$ F5 s/ f1 u; }) F, j - $phpmailer->From = ' [email protected]/old '; //你的郵箱. @4 O W- \1 j( s% P
- $phpmailer->SMTPAuth = true;3 c5 J7 A( J4 H6 [7 M0 f
- $phpmailer->SMTPSecure = ''; //tls or ssl (port=25留空,465為ssl)6 {9 c0 @" z/ N% U
- $phpmailer->IsSMTP();7 r1 `. x5 w! F$ s! H# `2 v- i4 V, v
複製代碼 用方法三終於解決了問題,夠折騰的。 問題二:wordpress固定鏈接無法使用。 這個問題很普遍,之前我經常在本地搭建php環境,也遇到這種問題,原因是它的Apache 無法打Mod_Rewrite,本地搭建很容易解決,修改相關apache相關配置文件就可以了。但是使用人家的空間就不是你能隨便更改的,所以我在網上找到了以下方法:
3 a+ l) L2 n/ n6 F新建一個記事本,加入如下代碼: ) N* e, S; Y- H1 s- t2 q" V
- [ISAPI_Rewrite]2 C2 b h: S4 K3 Q$ ?
7 O5 \6 K, L1 D, V z6 C- # 3600 = 1 hour5 r; b9 V6 `. [7 X( U
- CacheClockRate 3600
4 u) T5 J0 x1 |9 m - RepeatLimit 326 ?" ?. V- _3 ]# {& C3 }8 T
- # Protect httpd.ini and httpd.parse.errors files C; K/ }! \6 @2 h" j, y
- # from accessing through HTTP
) ?4 I4 o( E. J, @$ w! K7 m0 b - # Rules to ensure that normal content gets through$ n% I, i* g2 B: d, f% _
4 r# ?0 [' W0 I) @5 W1 |! a8 n2 m- RewriteRule /sitemap.xml /sitemap.xml [L]
8 j e" ^8 u3 P; ] - RewriteRule /favicon.ico /favicon.ico [L], P$ d5 _4 A( D* C( x4 H8 m
- # For file-based wordpress content (i.e. theme), admin, etc.
/ b& E% H1 r1 E& w4 j - RewriteRule /wp-(.*) /wp-$1 [L]
4 S' O/ e: J4 g4 f/ h - # For normal wordpress content, via index.php: I! W" I8 h/ H) C! P c/ U
- RewriteRule ^/$ /index.php [L]
! b# P* P% V1 {% c - RewriteRule /(.*) /index.php/$1 [L]
複製代碼另存為httpd.ini,然後將這個文件上傳至網站根目錄,再到wp後台設置固定鏈接,發現可以使用了。 0 g" u8 A6 S6 V6 ~/ z9 _3 \
問題三:安裝Google XMLSitemaps插件,寫入sitemap文件時發生錯誤。 這個問題最容易解決,在插件配置中「自定義位置」(默認的是自動檢查),將絕對路徑的斜槓改為反斜槓,例如將「D:\wwwroot\haoren\web/sitemap.xml」改為「D:\wwwroot\haoren\web\sitemap.xml」就可以了。 |