Http Header Error again in MovableType 3.31

I met the Http Header error during upgrade to MovableType 3.2. I use my own cgi files to replace the original files and solved this problem.
This time, when I upgrade from MovableType 3.2 to MovableType 3.31, something happen.
The test bed is Windows 2003, IIS web server. I install the MovableType in the mtcgi path, not in the root. So the problem comes again as below.

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

I use another way to solve this problem. As I mentioned in the Perl ISAPI Vs Perl.exe (Chinese), I use the ISAPI to ren the perl files.


1) Control Panel > Administrative Tools > IIS manager
2) Right Click on your site, choose Properties.
3) Under Home Directory tab, click configuration.
4) Under App Mappings tab, choose .cgi from the extension list. Click Edit button.
5) Change Executable field from “e:\Perl\bin\perl.exe “%s” %s” to “e:\Perl\bin\perlis.dll”.
iisextmapping

The difference of above is as below:

Why should I use Perl for ISAPI rather than Perl for Win32 (perl.exe)?
The short answer is: it’s faster. The long answer gets kind of technical, but it goes like this:
The main advantage of PerlIS over perl.exe is that PerlIS runs as a DLL in the web server’s process space. Because Win32 platforms set up a protected memory space for each process that is started, there’s a lot of overhead in starting a new process or program. Passing scripts to an interpreter, such as perl.exe, requires starting a new process for every script, which gets expensive in terms of system resources.
DLLs, on the other hand, don’t need their own process space; they use the space of the process that calls them. They don’t require nearly as much overhead to start, and once loaded they stay loaded until the calling process ends. PerlIS therefore runs Perl scripts with a quicker turn-around time than perl.exe.
Extra care should be taken when you write PerlIS applications. It is difficult to crash the web server using CGI, but because the PerlIS DLL runs in the process space of the server, your web server is more susceptible to crashes and hangs caused by programming errors.

This problem is only found in Windows 2003. I tried it in Windows 2000, XP. All fine.
If you have same problem and solve it by my way, please leave your comment below.

4 Comments


  1. Just tried perlis.dll again instead of perl.exe and the blog was blazing fast for about 5 minutes before it crashed. Oh and it did crash the IIS process, so the web pages don’t load at all.
    any ideas?

  2. I also run Win 2003 Server for my MT3.2 blog and when I last tried Perl ISAPI, the Perl ISAPI would crash after a couple of days, which required me to restart IIS.
    Well, the pages would still load, but the blog interface would stop working, as well as any CGI scripts on the web pages (i.e. captcha).
    How has your experience been with Perl ISAPI? Good uptime? Is there a way of determining when Perl ISAPI has crashed and restart it? It runs under the IIS process, so I can’t figure out when it has crashed.
    maybe I will try it again.
    your thoughts?

Leave a Reply

Your email address will not be published. Required fields are marked *