共享主机:使用CGI的自定义Perl版本

我正在尝试使用这些新的Perl Web框架之一(舞者)在便宜的共享主机上重新修复一些令人讨厌的旧网站。 我对现有的Perl安装(5.6.1)有模块依赖性问题,所以我在本地构build了一个新的(5.12)版本。

新的Perl版本在testing我的应用程序或使用开发服务器时似乎工作正常,我希望我可以将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无法find或执行我的新Perl版本,但我不明白为什么不。

我检查了我的本地Perl的权限,他们都是755,我虽然用户www将能够访问和执行正常。 现在我已经用完了想法? 还有什么我可以尝试?

我可以通过SSH连接到托pipe服务器,但没有root权限或访问Apacheconfiguration。

谢谢。

我不确定自己应该“回答”这个问题,但最终我发现了这个问题。 我在〜/ perl5目录下安装了自己的Perl版本,但是Apache显然只能在〜/ www(一个指向我的域名的符号链接)里面看到。重buildPerl和〜/ www / perl5中的所有模块。

得到教训:

  • 如果我使用“相对@INCpath”选项启用了Perl,我可以将整个程序移到一边,为自己节省了一大堆时间 – 这不是默认的。
  • cpanm(CPAN上的App :: cpanminus)是安装Perl模块及其依赖项的真正节省时间,如果您处于受限制的环境中,并且无法使常规CPAN正常工作。

这不太可能会帮助有类似情况的人,但你永远不知道。

(顺便说一下,现在我已经解决了构build/运行问题,运行一个像Dancer这样的现代化框架似乎没有用常规的旧CGI工作,可能还有一些configuration问题,但是我的小应用程序似乎非常慢但是这些是针对不同的SF问题的问题。)