我有一个CGI脚本,该脚本使用文件::复制CPAN模块使用图像:
use File::Copy;
.... (set appropriate content header)
binmode STDOUT;
copy $imageFile, *STDOUT || die "Image delivery failed: $!";
这在CGI下工作正常,但是当在mod_perl下运行时,我会得到:
[File::Copy::copy 140] stat() on unopened filehandle STDOUT at /usr/share/perl/5.14/File/Copy.pm line 140.
我不确定这是预期的行为还是某处是否有错误。我是MOD_PERL的新手,发现我目前正在文档中淹死。有什么方法可以更改我的脚本,因此它在CGI或MOD_PERL下运行良好?
来自mod_perl文档
在mod_perl,core :: print()下(使用stdout作为filehandle参数或根本没有filehandle)将将输出重定向到apache :: print(),因为stdout文件句柄绑定到apache。
,如果perltie
,则来自"错误"部分绑定的filehandles仍然不完整。sysopen(),truncate(),flock(),fcntl(),stat()和-x当前无法捕获。
您可以在https://rt.perl.org/rt3//public/bug/display.html?id=112164中的错误报告中阅读有关此信息的更多信息。
除非您愿意更改文件:: copy或mod_perl(以负面方式)。文件::复制期望与系统文件句柄关联的文件句柄,但Stdout是绑定的文件句柄。