我正在做一些開發工作,它使用嵌入式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