I brought up an ssh window, thinking on a hunch to try running mt-search.cgi from the command line; a couple days ago I did that, piping the output to a file, to see how far it got. This time, I got real error messages from Search.pm, an uninitialized variable, and three line numbers where this occured.
There were several variables to choose from, and a bit of experimentation showed that $ip was the one with the problem. On a hunch, I commented out the entire if statement (it's the one that checks to see if there's already a search in progress from that ip address) and now Search appears to work just fine.
The entire statement is:
# if (eval { require DB_File; 1 }) {
# my $file = File::Spec->catfile($cfg->TempDir, 'mt-throttle.db');
# my $DB = tie my %db, 'DB_File', $file;
# if ($DB) {
# my $ip = $app->remote_ip;
# if (my $time = $db{$ip}) {
# if ($time > time - 60) { ## Within the last minute.
# return $app->error($app->translate(
# "You are currently performing a search. Please wait " .
# "until your search is completed."));
# }
# }
# $db{$ip} = time;
# undef $DB;
# untie %db;
# $app->{__have_throttle} = 1;
# }
# }
and the trouble seems to be in the line:
my $ip = $app->remote_ip;
apparently, on this server, calling $app->remote_ip returns nada. Beyond that, I haven't a clue.
comment [1]