2012-10-23 24 views
0

我有擔任了使用文件::圖像的CGI腳本複製CPAN模塊:使用文件::複製服務了mod_perl下的圖像失敗

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下正常運行嗎?

回答

0

除非您願意更改File :: Copy或mod_perl(以負面方式)。 File :: Copy需要一個與系統文件句柄關聯的文件句柄,但STDOUT是一個綁定的文件句柄。

1

從mod_perl的文檔

在mod_perl,CORE ::打印()(使用STDOUT作爲文件句柄參數,或者沒有文件句柄在所有)將輸出重定向到Apache ::打印()中,由於STDOUT文件句柄綁定到Apache。

而且從BUGS部分,如果perltie

捆綁的文件句柄仍然是不完整。 sysopen(),truncate(),flock(),fcntl(),stat()和-X目前不能被捕獲。

如果您願意,可以在錯誤報告https://rt.perl.org/rt3//Public/Bug/Display.html?id=112164中閱讀更多信息。