IIS 6.0 (Windows 2003)下安装Movable Type出错

之前曾经探讨过这个问题。当在Windows 2003的IIS+PHP+MySQL+Perl组合上安装Movable Type 3.2以上版本时,屏幕会出现:

CGI Error

The specified CGI application misbehaved by not returning a complete set of HTTP headers.

的错误提示。此前的解决办法是让ActivePerl以ISAPI方式解析CGI程序,实际上,Movable Type官方也注意到这一点儿,他们给出了下面的解决方案

解答

导致Movable Type在IIS 6.0(Windows 2003)上安装出现CGI Error的原因是,在Windows 2003 Server下,Movable Type的当前工作路径与CGI脚本路径并不相同,运行mt-check.cgi,你会发现,mt-check.cgi:

# Current working directory: (path)

# MT home directory: (different path)

这里的Current working directory和MT home directory指向了不同的路径。要解决此问题,请按照以下步骤操作:

  • 在IIS下创建一个虚拟目录,指向Movable Type CGI脚本所在的物理路径,即mt-check.cgi报告的MT home directory;
  • 下载这个新的Bootstrap.pm文件,将其拷贝到lib/MT/Bootstrap.pm,覆盖原文件;
  • 编辑mt-config.cgi文件,设置CGIPath为刚才建立的虚拟目录的URL;
  • 再次运行mt-check.cgi,你会发现 Current working directoryMT home directory 的路径相同,都指向了文件真实的物理路径。
到这里,Movable Type就可以正常运行了。