我有一个Perl CGI脚本,它会随机发出不同的HTML。没有任何输入改变。例如,我将运行wget
两次,得到两个不同的结果。 CGI由开发数据库提供支持,该数据库也不会发生变化。
我有一个调试语句,告诉我从DB返回相同数量的元素到脚本中。
坦率地说,我很神秘。逻辑,数据库和输入不会改变,但输出会改变。http服务器是Ubuntu 10.04上的apache2。 Perl版本是perl 5.10。
编辑:每当我从服务器上的命令行运行它时,输出都是正确的。
edit2:一些糟糕的运行看起来像以前的脚本版本。我不认为 Apache是缓存CGI,但似乎它可能会抓取过时的缓存版本....
答案 0 :(得分:3)
您的CGI脚本是使用Apache的标准CGI API运行还是使用Apache :: Registry(或Apache2中的ModPerl :: Registry)CGI仿真层在mod_perl下运行?
我已经看到类似于你描述的效果,这是由mod_perl的CGI仿真工作方式产生的。详细信息为discussed here。
一种解决方法是使用“my”将脚本开头声明的任何“全局”变量,并将关键字“my”更改为“my”。
当然,你的问题可能完全不同 - 没有更多信息就很难说。
答案 1 :(得分:0)
缓存:Apache可能不是缓存,但您的浏览器可能不是。关闭缓存(将浏览器缓存设置为0MB)。
命令行:如果您的输出与网页的CLI执行不同,那么您似乎缺少标题信息,或者HTML标记未完成或损坏。例如,您需要具有两个换行符的Content-Type语句。
如果它在CLI上工作,但现在通过网络服务器上的CGI,它必须是你的代码,Apache中缺少的模块,或类似的东西。