我第一次尝试使用mod_perl。我对它完全陌生。我选择了ModPerl::PerlRun
,因为我不想对我已经拥有的脚本进行任何修改
我按照Installing Apache2/Modperl on Ubuntu 12.04
中的说明操作我已将script.pl
上传至/perl
,并且脚本看起来它正常运行,除非此
open(my $fh, '<:encoding(UTF-8)', 'page_template.htm') or die $!;
它不会打开文件而死掉
No such file or directory at /var/www/perl/script.pl
答案 0 :(得分:1)
<强>更新强>
请注意,the documentation for ModPerl::PerlRun
可以这样说
META:文件说现在我们没有chdir()进入脚本的目录,因为它会影响线程下的整个进程。
所以在你的程序代码中简单地执行chdir
可能是行不通的,并且应该使用下面的第二个选项
<强>原始* 强>
您的CGI程序的当前工作目录不是您的想法。它最有可能是根目录/
您可以使用chdir
设置脚本的工作目录
use File::Basename 'dirname';
chdir dirname(__FILE__);
或者只是添加要打开的文件名的完整路径,例如
open my $fh, '<:encoding(UTF-8)', '/perl/page_template.htm' or die $!;
请注意,您不能使用FindBin
,因为您的程序是作为Apache主mod_perl进程的子例程运行的,因此$FindBin::Bin
将等于Apache可执行文件的目录{{1而不是你自己的程序文件