我有一个 perl CGI 脚本,它可以将文件从 PC 上传到 Linux 服务器。
当我以自己的 HTML 表单编写对 CGI 的调用然后执行时,它完全按预期工作,但是当我将相同的调用放入现有应用程序时,文件在服务器上创建,但没有获取数据,它大小为零。
我已经比较了环境变量(我可以从中提取的那些%ENV
),没有任何东西看起来像一个原因。我实际上尝试将我自己的 HTML 脚本中的几个 ENV 更改为现有应用程序正在使用的值,但这并没有揭示问题。
日志中没有给我任何线索,上传操作认为它是成功的。两个测试的用户都是相同的。如果权限是一个问题,那么该文件甚至不会在服务器上创建。
IE 中的结果与 Chrome 中的结果相同(来自我自己的 HTML 脚本,而不是来自应用程序)。
我应该查看哪些具体设置进行比较?
这是上传代码:
if (open(UPLOADFILE, ">$upload_dir/$fname")) {
binmode UPLOADFILE;
while (<$from_fh>) {
print UPLOADFILE;
}
close UPLOADFILE;
$out_msg = "Done with Upload: upload_dir=$upload_dir fname=$fname";
}
else {
$out_msg = "ERROR opening for upload: upload_dir=$upload_dir filename=$filename";
}
我确实验证了
- 从应用程序内部运行时,它不会进入 while 循环。
- 当从我自己的 HTML 脚本调用时,它确实进入了 while 循环。
两次运行的值$from_fh
相同。以下块中使用的所有值对于两次运行都完全相同。