0

我正在尝试设置一个 apache 服务器来使用 FGMap 显示 FlightGear 的地图。地图页面的所有 Web 服务器文件都在 /var/www/fgmap 中。它调用 fg_server_xml.cgi 脚本,该脚本尝试使用 /var/www/fgmap/sg_perl/blib/lib/sgmath.pm 中的库。(作为参考,Blib 是指向同一目录中另一个文件夹的符号链接 - 指向 /var/www/fgmap/sg_perl/blibx86-64)

当我尝试访问该页面时,fg_server_xml.cgi 给 ma 一个 500 Internal Server Error,并且 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 放到同一个目录中,它引用同一个库并从中运行一个函数并打印输出。该脚本运行良好,并且可以找到该库。

为什么一个脚本在其库调用中与另一个脚本相同且在完全相同的位置,却无法找到另一个脚本可以轻松访问的文件?

我的一个理论是,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 回答