打开文件句柄不能在mod_perl ModPerl :: PerlRun下工作

时间:2015-05-31 21:15:14

标签: perl mod-perl2

我第一次尝试使用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

1 个答案:

答案 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而不是你自己的程序文件