MovableType, CGI.pm, and the edcdib2ascii error

This is my attempt at feeding something out there in hopes that others who slam into this lovely new problem can find a quick fix without tons of digging through nothing (yo Google, get your butt over here and INDEX!):

On December 10th, 2003, the perl module CGI.pm version 3.01 was released.. a nice little upgrade over v 3.00 I’m sure. However, from what I’ve seen, upgrading this perl module breaks MovableType seven ways from Sunday, suddenly MT starts throwing errors up all over the place (in the admin screens, comment pages, etc) Everywhere you look, you’ll see:

Got an error: “ebcdic2ascii” is not exported by the CGI::Util module “ascii2ebcdic” is not exported by the CGI::Util module Can’t continue after import errors at /usr/lib/perl5/5.8.1/CGI.pm line 27 BEGIN failed–compilation aborted at /usr/lib/perl5/5.8.1/CGI.pm line 27. Compilation failed in require at lib/MT/App.pm line 92.

I’ve seen this happen on boxes with perl v5.8.1, v5.6.1, Redhat boxes, Gentoo boxes, boxes of all shapes and sizes. Heck, a google search turns up eight movabletypes out there right now who have been hit, and no doubt that number is going to climb as more and more servers out there get upgraded to the ‘new’ CGI.pm module.

So whats the solution you ask? For now… downgrade back to v3.00 of CGI.pm. First time I saw this problem I tried beating on the box for about three hours, digging around the net, finding nothing, and being frustrated before I just said “ah, the heck with it… lets try downgrading”… installed the 3.00 version, and BOOM, problem solved.

Hopefully the author of CGI.pm will get wind that somethings amiss, or maybe it’s a movabletype specific problem, I don’t know, I don’t see any other talk out there about this error except in MT circles, but I’m not enough of a perl freak (I say that with love perl freaks, it’s not an insult, really), to go tiptoeing through the code looking for exactly what’s wrong.. I just know that after three hours of “grrrr” I found a solution that solved the problem in 10 seconds… a simple downgrade.

Update: Something that continued to bother me about this was that in some cases, one MoveableType installation would blow up and get the error, while another installation on the same machine would run perfectly fine with no error. It turns out the problem only occurs when the moveabletype install was performed *with the extlibs included* I’m not sure if maybe the MT install with extlibs only has some of the CGI:: module and not all of it, and maybe MT is trying to use some parts old version, some parts new, but I found that by removing the CGI folder in MT’s extlib directory, I could resolve the MT error without downgrading the CGI:: module. Go figure.

Leave a Reply

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