gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:56:26 25 4
gpt4 key购买 nike

我正在尝试设置一个 apache 服务器来使用 FGMap 显示 FlightGear 的 map 。 map 页面的所有 Web 服务器文件都在/var/www/fgmap 中。它调用 fg_server_xml.cgi 脚本,该脚本尝试使用/var/www/fgmap/sg_perl/blib/lib/sgmath.pm 中的库。 (作为引用,Blib 是指向同一目录中另一个文件夹的符号链接(symbolic link) - 指向/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;

最佳答案

使用 use lib , 你加了

/var/www/sg_perl/blib/lib

但你说文件在
/var/www/fgmap/sg_perl/blib/lib

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

关于perl - 两个 perl 脚本使用同一个库,在同一个文件夹中 - 一个可以访问它,另一个不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com