0

FGMapを使用してFlightGearのマップを表示するようにApacheサーバーをセットアップしようとしています。マップページのすべてのWebサーバーファイルは/var/ www/fgmapにあります。/var/www/fgmap/sg_perl/blib/lib/sgmath.pmにあるライブラリを使用しようとするfg_server_xml.cgiスクリプトを呼び出します。(参考までに、Blibは同じディレクトリ内の別のフォルダへのシンボリックリンクです-/ var / www / fgmap / sg_perl / blibx86-64へ)

fg_server_xml.cgiは、ページにアクセスしようとするとmaに500内部サーバーエラーを表示し、apacheエラーログに次のように表示されます。

[Sat Jun 30 07:59:48 2012] [warn] -T switch is ignored, enable with 'PerlSwitches -T' in httpd.conf\n
[Sat Jun 30 07:59:48 2012] [error] Can't locate sgmath.pm in @INC (@INC contains: /var/www/sg_perl/blib/arch/auto/sgmath 
/var/www/sg_perl/blib/lib /etc/perl /usr/local/lib/perl/5.14.2 
/usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 
/usr/local/lib/site_perl . /etc/apache2) 
at /var/www/fgmap/fg_server_xml.cgi line 14.\nBEGIN failed--compilation aborted at /var/www/fgmap/fg_server_xml.cgi 
line 14.\n

ただし、別のperlスクリプトsg_test.plを同じディレクトリにドロップしました。このスクリプトは、同じライブラリを参照し、そこから1つの関数を実行して、出力を出力します。このスクリプトは正常に機能し、ライブラリを見つけることができます。

ライブラリ呼び出しが同じで、まったく同じ場所にある1つのスクリプトが、他のスクリプトが問題なくアクセスできるファイルを見つけることができないのはなぜですか?

私の理論の1つは、Apacheがsgmath.pmを含むフォルダーにアクセスするためのアクセス許可などを持たないユーザーとしてアクセスしようとしているため、すべてのユーザーがWWWのすべてのフォルダー/サブフォルダー/ファイルにアクセスできるようにしました。まだ運がない。

Apacheは間違いなく.cgiを使用できますが、問題はありません。問題なく動作するテスト.cgiファイルを作成しました。

ありがとう!

編集:問題のライブラリ呼び出し

use lib "/var/www/sg_perl/blib/lib";
use lib "/var/www/sg_perl/blib/arch/auto/sgmath";
use sgmath;
4

1 に答える 1

4

を使用してuse lib、追加しました

/var/www/sg_perl/blib/lib

しかし、あなたはファイルが入っていると言いました

/var/www/fgmap/sg_perl/blib/lib

この後者のパスはに存在しません@INC(エラーメッセージをチェックすることで確認できます)。

于 2012-06-29T22:34:32.433 に答える