我正在做一些开发工作,它使用嵌入式Linux作为操作系统,Boa用于Web服务器。我有一个网页发布到CGI脚本,处理表单数据和回复。我的开发环境是Ubuntu,并且一切正常,但是当我将代码移植到嵌入式Linux时,CGI模块没有实例化(或者至少似乎没有实例化)。这里是我的代码的精简部分。 print声明了一个未初始化的变量。Perl的CGI问题
use CGI;
use strict;
use warnings;
my $cgiObj = CGI->new();
print $cgiObj->param('wlanPort');
再次,这在我的开发环境中工作正常,但在嵌入式环境中失败。 CGI.pm已安装,并且在CGI-> new()命令中没有生成错误。我还验证了表单数据正在发送,但显然不能保证它正在被Perl脚本接收。
我有一种感觉,这是一个Boa配置问题,这就是接下来我将要研究的内容。我对Perl相当陌生,所以我不确定还有什么要做。有任何想法吗?
编辑:绝对不是一个博阿配置问题。仍在研究它。
更新: 我已经简化我的代码如下:
#!/usr/bin/perl
use CGI qw(:standard);
$data = param('wlanPort') || '<i>(No Input)</i>';
print header;
print <<END;
<title>Echoing user input</title>
<p>wlanPort: $data</p>
END
正如预期的那样,它打印(无输入)
我还要指出的是,形式是ENCTYPE = “multipart/form-data”,因为我必须具有文件上传功能,而且我正在使用“POST”方法。
我使用的是HttpFox插件来检查后的数据,并检查了wlanPort值:
-----------------------------132407047814270795471206851178 Content-Disposition: form-data; name="wlanPort"
eth1
所以它几乎肯定被送到...
更新2:我安装的是同一版本的Perl和Boa被用在我的Ubuntu笔记本电脑上的嵌入式系统中。在笔记本电脑上工作,而不是在设备上,这是相同的结果。我告诉我的雇主说,除了Boa和(Micro)Perl构建在设备上而非Ubuntu上的方式外,我已经耗尽了所有可能性。
你能给出整个错误/警告信息吗?另外,你确定'wlanPort'作为参数被填充吗?为什么不提取整个参数列表:$ params = $ q-> vars(),然后在前块中用Data :: Dumper转储哈希值?然后你可以验证这些参数是你期望的。 – DavidO 2011-06-15 20:01:20
@Chris - 可能在对CGI对象进行实例化之前尝试调用CGI :: initialize_globals()。 – dwarring 2011-06-16 06:50:23
@DavidO唯一的错误我得到的是一个串联的错误:() 在串联或字符串中使用未初始化值在./setwirelessconfig.cgi线28 在第28行的代码是这样的: 打印“wlanPort-- >“。 $ cgiObj-> PARAM( 'wlanPort'); 由于我在嵌入式环境中有少量内存,因此我无法使用Data :: Dumper。我只能确定价值被张贴。 – 2011-06-17 00:19:03