本 WordPress 的 blog 之前已經由 IIS 換成 Win32 Apache, 今天又把 php 4.3 換成 php 5, 記錄一下修改的地方, 其實也蠻簡單的. 自己架設部落格的伺服器不是困難的事.

  1. 首先當然是下載 Apache, 目前最新的是 2.0.54, 及下載 php, 目前最新的是 5.0.4, 我是用 zip package 的那一個.
  2. 安裝完 Apache 後, 改 conf/httpd.conf 這些地方
    # WinNT MPM
    # ThreadsPerChild: constant number of worker threads in the server process
    # MaxRequestsPerChild: maximum  number of requests a server process serves
    <ifmodule mpm_winnt.c>
    Win32DisableAcceptEx # 新增,在 win32 較好
    ThreadsPerChild 100 # 250 改成 100
    MaxRequestsPerChild  0
    </ifmodule>

    拿掉最前面的#號
    LoadModule rewrite_module modules/mod_rewrite.so

    加上 php 支援
    LoadModule php5_module "C:\php5\php5apache2.dll"
    PHPIniDir "C:/php5/"

    看你的網頁放在哪,這裡延用 IIS 的根目錄
    DocumentRoot "C:/Inetpub/wwwroot"

    這兩個改成 off 在 win32 較好
    EnableMMAP off
    EnableSendfile off

    放 WordPress 的地方加上這個, mod_rewrite 才能生效
    <directory "C:/Inetpub/wwwroot/wp">
    AllowOverride FileInfo
    </directory>

    default 網頁加上 index.php
    DirectoryIndex index.php index.html index.html.var

    支援 .php 檔尾
    AddType application/x-httpd-php .php

  3. 解壓 php 到一個目錄,我用 c:\php5, 把 php.ini-recommended 改名為 php.ini, 修改 php.ini 這些地方

    修改 extension 的位置
    extension_dir = "c:/php5/ext/"

    用到這幾個 extensions, 拿掉最前面的 ; 號
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll

    視需要修改
    SMTP = seed.net.tw

  4. 因為那些 extension 會用到額外的 dll, 所以要把 c:\php5 加到 PATH, 或把這些 dll copy 到 PATH 中的目錄內
    fdftk.dll
    fribidi.dll
    gds32.dll
    libeay32.dll
    libmhash.dll
    libmysql.dll
    msql.dll
    ntwdblib.dll
    ssleay32.dll
    yaz.dll

Ok! 用起來也蠻穩的,並沒有傳說中 Apache2 及 php5 不太穩. 至於 php4 及 php5 相容性問題, 不知道有什麼程式會有問題, 再看看.

UPDATE 5/4/2005

又換回 php 4.3 (順便升級最新的 4.3.11)… 因為 log 裡出現了一些 warning, 且有一個 WordPress 的 plugin 不能正確運作, 所以 php5 跟 php4 的相容性是有一點點問題呀.

用 php 4.3, Apache 的 conf/httpd.conf
LoadModule php4_module "C:\PHP\php4apache2.dll"
PHPIniDir "C:/PHP/"

其他地方一樣

php 的部分是一樣的,目錄換成放php4的地方,如C:\php. 4.3 版不需 extension=php_mysql.dll, 有內建.