私は、OS に組み込み Linux を使用し、Web サーバーにBoaを使用する開発作業を行っています。CGI スクリプトに投稿し、フォーム データを処理し、返信する Web ページがあります。私の開発環境は 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
予想通り、印刷されます(入力なし)
ファイルのアップロード機能が必要で、「POST」メソッドを使用しているため、フォームが enctype="multipart/form-data" であることも指摘しておく必要があります。
HttpFox プラグインを使用して投稿データを検査し、wlanPort 値を確認しました。
-----------------------------132407047814270795471206851178 Content-Disposition: フォームデータ。name="wlanPort"
eth1
ということで、ほぼ間違いなく送られてきました…
更新 2: Ubuntu ラップトップの組み込みシステムで使用されているのと同じバージョンの Perl と Boa をインストールしました。同じ結果であるデバイスではなく、ラップトップで動作します。Boa と (Micro) Perl をデバイス上で構築する方法と Ubuntu で構築する方法以外のすべての可能性を使い果たしたと雇用主に伝えました。