Назад | Перейти на главную страницу

Общий хостинг: использование специальной версии Perl для CGI

Я пытаюсь обновить некоторые неприятные старые сайты на дешевом общем хосте, используя одну из этих новомодных веб-фреймворков Perl (Dancer). У меня были проблемы с зависимостью модулей от существующей установки Perl (5.6.1), поэтому я создал новую версию (5.12) локально.

Новая версия Perl, кажется, работает нормально при тестировании моего приложения или с использованием сервера разработки, и я надеялся, что смогу просто изменить сценарий CGI, чтобы он указывал на мой новый Perl, и Apache будет нормально его обслуживать. К сожалению, в журнале ошибок Apache я просто получаю:

failed to open log file
fopen: Permission denied
[Thu Dec  9 14:45:21 2010] [error] [client 138.***.***.***] Premature end of script headers: /home/www/hosts/blahblah/cgi-bin/bb/public/dispatch.cgi

Похоже, это означает, что Apache не может найти или выполнить мою новую версию Perl, но я не понимаю, почему.

Я проверил разрешения на моем локальном Perl, и все они 755, которые, как я думал, пользователь www сможет получить доступ и выполнить нормально. Теперь у меня закончились идеи? Что еще я могу попробовать?

Я могу подключиться к серверу хостинга по SSH, но у меня нет корневых разрешений или доступа к конфигурации Apache.

Спасибо.

Не уверен, что я должен «ответить» на это сам, но в конце концов я понял проблему. Я установил свою собственную версию Perl в каталог ~ / perl5, но Apache, по-видимому, мог видеть только внутри ~ / www (символическая ссылка, указывающая на мое доменное имя). Восстановление Perl и всех модулей внутри ~ / www / perl5 исправлено. .

Уроки выучены:

  • если бы я настроил Perl с включенной опцией "относительные пути @INC", я бы просто переместил всю партию и сэкономил себе кучу времени - это не хотя по умолчанию.
  • cpanm (App :: cpanminus на CPAN) - это реальная экономия времени на установку модулей Perl и их зависимостей, если вы находитесь в ограниченной среде и не можете заставить работать обычный CPAN.

Вряд ли это поможет кому-то в подобной ситуации, но никогда не знаешь.

(Между прочим, теперь я решил проблемы сборки / запуска, запуск современной структуры, такой как Dancer, похоже, не работает с обычным старым CGI. Могут остаться некоторые проблемы с конфигурацией, но кажется невероятно медленно обслуживает мое крошечное приложение. Но это проблемы для другого вопроса о научной фантастике.)