我正在做一些开发工作,将嵌入式 Linux 用于操作系统,将Boa用于 Web 服务器。我有一个发布到 CGI 脚本、处理表单数据和回复的网页。我的开发环境是 Ubuntu,一切正常,但是当我将代码移植到嵌入式 Linux 时,CGI 模块没有实例化(或者至少似乎没有实例化)。这是我的代码的精简部分。print 语句抱怨一个未初始化的变量。
use CGI;
use strict;
use warnings;
my $cgiObj = CGI->new();
print $cgiObj->param('wlanPort');
同样,这在我的开发环境中工作正常,但在嵌入式环境中失败。CGI.pm 已安装并且在 CGI->new() 命令上没有生成错误。我还验证了表单数据正在发送,但显然不能保证 Perl 脚本正在接收它。
我觉得这是一个 Boa 配置问题,这就是我接下来要研究的问题。我对 Perl 还很陌生,所以我不确定还能做什么。有任何想法吗?
编辑:绝对不是 Boa 配置问题。仍在调查中。
更新:我已将代码简化为以下内容:
#!/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 内容处置:表单数据;名称="wlanPort"
eth1
所以它几乎肯定会被发送......
更新 2:我在我的 Ubuntu 笔记本电脑的嵌入式系统中安装了相同版本的 Perl 和 Boa。在笔记本电脑上工作,而不是在设备上工作,结果是一样的。我已经告诉我的雇主,除了 Boa 和 (Micro) Perl 在设备上与在 Ubuntu 中构建的方式之外,我已经用尽了所有可能性。