【问题标题】:Can't locate Geo/Gpx.pm in @INC apache mac在@INC apache mac 中找不到 Geo/Gpx.pm
【发布时间】:2013-12-12 10:13:32
【问题描述】:

尽管有很多查询都在问同一个问题。但是这里的错误是由 apache 而不是 Perl 引发的。 我正在尝试在 Mac OS X Mavericks 上为客户端创建 XML 响应,并编写了 perl 脚本,如下所示:

#!/usr/bin/perl -wT                                                                                                                                                                  
use lib '/opt/local/lib/perl5/site_perl/5.16.1/Geo';
use strict;
use CGI;
use Geo::Gpx;

open (FH, "/tmp/temp/file.txt") or print ("Unable to Open File");

my $gpx = Geo::Gpx->new;
my $cgi = CGI->new;
print $cgi->header(-type=>"text/gpx",-status=>"200 OK");

my $lon;
my @arr = <FH>;

foreach(@arr){
my %waypoints;
my $var = $_;
my @lat = split(/\s+/,$var);
#@waypoints=split(/\s+/,$_);                                                                                                                                                     
$waypoints{$lat[0]}=$lat[1];
$waypoints{$lat[2]}=$lat[3];
$gpx->add_waypoint(\%waypoints);
}

my $xml = $gpx->xml;
print $xml;
open FILE, ">/tmp/temp/xmlfile.xml" or die $!;
print FILE $xml;
close (FILE);
close(FH);

为了让 apache 找到 Gpx.pm 的实际路径,我使用了“use lib”来显示文件的实际路径。 尽管此脚本在命令行上运行良好,但我的 apache 服务器抛出以下错误:

[Tue Nov 26 18:34:51 2013] [error] [client 127.0.0.1] Can't locate Geo/Gpx.pm in @INC 
(@INC contains: /opt/local/lib/perl5/site_perl/5.16.1/Geo /Library/Perl/5.16/darwin-thread-multi-2level 
/Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level /Network/Library/Perl/5.16 
/Library/Perl/Updates/5.16.2 /System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16 
/System/Library/Perl/Extras/5.16/darwin-thread-multi-2level /System/Library/Perl/Extras/5.16 .) at /Users/Rachit/Sites/temp.pl line 7.
[Tue Nov 26 18:34:51 2013] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /Users/Rachit/Sites/temp.pl line 7.

我使用过 macports,并发现通过 Web 搜索 Mavericks 已经预装了 perl 5.16。所以 apache 可能正在使用它,而 perl 正在使用 macport 安装的库。 在检查上面发布的 apache error_log 文件提到的路径时,我已将 Gpx.pm 复制到安装在 Geo 文件夹中的一个库中,但仍未解决。 关于运行 'which perl' 的结果

/opt/local/bin/perl

还有“哪个cpan”给出了

/opt/local/bin/cpan

请解决这个问题,因为我无法继续前进。而且我对apache不是很熟悉。

【问题讨论】:

    标签: perl apache macports osx-mavericks gpx


    【解决方案1】:

    /opt/local/lib/perl5/site_perl/5.16.1/Geo 应该是 /opt/local/lib/perl5/site_perl/5.16.1/,因为它会将完整的模块名称(将 :: 替换为 /)附加到每个路径以查找文件。

    【讨论】:

    • 非常感谢。这有帮助。
    • 能否再回答一个问题。我的浏览器不是在后台发送响应,而是打印完整的 xml 文件。我哪里做错了?
    • @001011Idreamincode 将以下内容添加到 header() 调用:-Content_Disposition =&gt; "attachment; filename=download.gpx"。也许使用application/xml 而不是text/gpx
    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 2020-12-09
    • 2017-07-13
    • 2021-03-03
    • 2013-10-24
    • 2018-01-11
    • 2020-07-15
    • 2018-11-08
    相关资源
    最近更新 更多