I did... in this case the test pic is only 6kb, and as far as I can tell my limit is set to 50M.
But what doesn't make any sense at all to me is that it proceeds past the exit, and still writes to MySQL. This is the exact code to insert to MySQL:
$sth = $dbh->prepare("INSERT INTO events (username, which, category, title, location, street, city, zip, hours, admission, tele, email, website, flyer, description) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$sth->execute($contents{'username'}, $contents{'event_which'}, $contents{'category'}, $contents{'name'}, $contents{'location'}, $contents{'street'}, $contents{'city'}, $contents{'zip'}, $contents{'hours'}, $contents{'admission'}, $contents{'tele'}, $contents{'email'}, $contents{'website'}, $flyer, $contents{'description'}) or die $dbh->errstr;
And inexplicably, it (wrongly) thinks that $contents{'username'} is empty on line 35, but then writes the (correct) value of it on line 219.
Even weirder is that, just after the line to write to MySQL, I have a section to email the data to me. That email is never sent, so it appears to continue past the exit, write to MySQL, and then just stop for what appears to be no reason :-/
This all began when I moved to the new server. I triple checked the permissions on all directories, they're all set to 0666 and the owner/group is right.
The only new things would be the upgrade in Perl version, I installed mod_pagespeed, and I moved .htaccess to Apache configuration. I've looked through the .conf files and can't see anything that could potentially cause this, but if it's not Perl then it HAS to be there; otherwise, I'm running out of ideas