Я пытаюсь обновить некоторые неприятные старые сайты на дешевом общем хосте, используя одну из этих новомодных веб-фреймворков 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 исправлено. .
Уроки выучены:
Вряд ли это поможет кому-то в подобной ситуации, но никогда не знаешь.
(Между прочим, теперь я решил проблемы сборки / запуска, запуск современной структуры, такой как Dancer, похоже, не работает с обычным старым CGI. Могут остаться некоторые проблемы с конфигурацией, но кажется невероятно медленно обслуживает мое крошечное приложение. Но это проблемы для другого вопроса о научной фантастике.)