많은 질문이 있어도 같은 질문을 물어 봅니다. 하지만 여기 오류는 Perl 대신 Apache에서 발생합니다. 나는 맥 OS X 매버릭스의 클라이언트에 대한 XML 응답을 만들려고하고 다음과 같이 펄 스크립트를 작성했습니다 :@INC apache mac에서 Geo/Gpx.pm을 찾을 수 없습니다.
Gpx.pm의 실제 경로를 찾을 수있는 아파치를 들어#!/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);
, 내가 사용하고 있습니다 'lib 사용'은 파일의 실제 경로를 보여줍니다. 이 스크립트는 명령 줄에서 완벽하게 작동하고 있지만 , 내 아파치 서버는 다음과 같은 오류 던지고있다 :
[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를하고 매버릭스는 5.16 사전 설치된 펄 가지고 웹을 통해 검색을 발견했다. 그래서 아파치가 그것을 사용하고있을 펄은 macport 설치된 라이브러리를 사용하고 있습니다. 위에서 게시 한 Apache error_log 파일에서 언급 한 경로를 확인하는 과정에서 Geo Folder에 설치된 라이브러리 중 하나에서 Gpx.pm을 복사했지만 아직 해결되지 않았습니다. 내가 이것 때문에 전진 할 수없는 나처럼
/opt/local/bin/cpan
이 친절하게이 문제를 해결주고있다 'CPAN'결과
/opt/local/bin/perl
와 '펄있는'실행에 . 그리고 나는 아파치에 익숙하지 않다. 이 파일을 찾기 위해 각 경로에 대한 전체 모듈 이름 (/
으로 ::
교체)를 추가합니다으로
고맙습니다. 이것은 도움이되었습니다. – 001011Idreamincode
제발 좀 더 대답 해주세요. 백그라운드에서 응답을 보내는 대신 내 브라우저가 전체 XML 파일을 인쇄합니다. 내가 어디에서 잘못하고 있니? – 001011Idreamincode
@ 001011Idreamincode header() 호출에 다음을 추가하십시오 :'-Content_Disposition => "attachment; filename = download.gpx"'. 그리고'text/gpx' 대신에'application/xml'을 사용하십시오. –