两个perl脚本使用相同的库,在同一个文件夹中 - 一个可以访问它,另一个不能

时间:2012-06-29 22:09:54

标签: perl apache ubuntu

我正在尝试设置一个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给出了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放到同一个目录中,该目录引用同一个库并从中运行一个函数并打印输出。这个脚本工作正常,可以找到库。

为什么一个脚本在其库中调用另一个脚本并且位于完全相同的位置时,无法找到另一个没有访问的文件?

我的一个理论是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;

1 个答案:

答案 0 :(得分:4)

使用use lib,您添加了

/var/www/sg_perl/blib/lib

但你说文件在

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

后一个路径在@INC中不存在(通过检查错误消息确认)。