Надеюсь, ты сможешь помочь, я новичок! Я перечислил несколько дополнительных деталей, которые могут не иметь отношения.
Я загружаю cgi-скрипты в локальный / личный каталог на сервере Apache / 2.2.10, используя FTP95Pro в ASCII. Скрипты правильно выполняются с использованием perl на моем веб-сервере в терминальном сеансе. Таким образом, в моем коде нет фатальных синтаксических ошибок.
«Действие» веб-страниц для каждого сценария cgi в / cgi-bin /. Существуют символические ссылки, которые связывают файлы системного каталога с файлами моего локального каталога. FollowSymLinks включен (не знаю, как). Разрешения правильные (755). Очевидно, эта установка не изменилась.
Скрипты отлично выполнялись в течение многих лет, вплоть до 2010 года. Но теперь, в 2010 году, я заменил рабочие скрипты новыми скриптами / файлами, теперь с точно таким же текстом, именем файла и разрешениями. Изменилась только дата (последнее изменение). Но теперь я получаю 500 Internal Server Error и не могу определить причину. Администратор моего сервера предполагает, что у меня есть ошибки в коде. Но код не изменился с прошлого года, и он отлично работает (хотя и без аргументов) на консоли веб-сервера с использованием perl myscript.cgi
Есть ли что-нибудь, что могло измениться? Я с подозрением отношусь к новому десятилетию. Я думаю, что в прошлом году сервер переключился с Linux на ОС Windows, но у моего администратора сервера все заработало. Возможно, он пропустил что-то необычное, связанное с 2010 годом?
Если CGI-скрипт не сломался с 1 января 2010 года, то я сильно сомневаюсь, что это связано с 2010 годом.
См. Вопрос Q3.4 Perl и CGI FAQ, и дважды проверьте элементы на этом Отладка сценария Perl CGI список.
Использовать diff
инструмент для сравнения старой и новой версии, чтобы убедиться, что исходный код ничем не отличается.
Добавить Perl Cgi: Карп поддержка для отладки установленного скрипта.
Использовать use warnings
и use strict
в скрипте Perl
Тест с использованием perl -c script.cgi
(видеть: perldoc perlrun
)
В Spamassassin есть хорошо известная ошибка 2010 года, связанная с регулярным выражением. Возможно, ваш похож. Я бы посоветовал вам перепроверить свой код на предмет предположений, связанных с датами. Я голосую за то, чтобы переместить этот вопрос в Stackoverflow.