【发布时间】:2011-08-15 20:00:32
【问题描述】:
我正在尝试使用 EBook::Epub 将 html 文件转换为 epub。我写的脚本很简单,像这样:
my $epub = EBook::EPUB->new;
$epub->add_title('title');
$epub->add_author('author');
$epub->add_language('en');
$epub->copy_xhtml("d:/path/to/file.html" , "file.html");
$epub->pack_zip("d:/path/to/file.epub");
当我从命令行运行它时,效果很好。但是,我正在尝试将它作为 CGI 脚本部署在 IIS6 服务器上——它在 same 计算机上运行——它失败并显示以下消息:
Can't call method "desiredCompressionLevel" on an undefined value at C:/strawberry/perl/vendor/lib/Archive/Zip/Archive.pm line 252.
我检查了 Archive.pm,第 252 行在子 addFile 中。它使用了三个变量——$fileName、$newName、$compressionLevel——我使用了一些打印语句从第 252 行之前显示它们的值。($compressionLevel 始终为空白)
这是来自命令行,有效:
filename: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\7QiqzzNiN5/OPS/file.html
newname: OPS/Advanced8247.html
filename: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\7QiqzzNiN5/OPS/content.opf
newname: OPS/content.opf
filename: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\7QiqzzNiN5/OPS/toc.ncx
newname: OPS/toc.ncx
filename: C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\DkgiQN_pTq
newname: META-INF/container.xml
这是来自服务器的炸弹:
filename: C:\WINDOWS\TEMP\8rxbvOVkKy/OPS/file.html
newname: OPS/Advanced6575.html
filename: C:\WINDOWS\TEMP\8rxbvOVkKy/OPS/content.opf
newname: OPS/content.opf
filename: C:\WINDOWS\TEMP\8rxbvOVkKy/OPS/toc.ncx
newname: OPS/toc.ncx
filename: C:\WINDOWS\TEMP\WqS7fskWi0
newname: META-INF/container.xml
所以我猜我的问题与临时文件的写入位置有关,但我对服务器和 Archive::Zip 的了解还不够多,无法弄清楚。有什么想法吗?
【问题讨论】: