2009-04-19 4 views
4

호스팅 된 스크립트가 이동되어 더 이상 작동하지 않습니다. UNC 경로에 'lib'사용이 가능합니까?

지정한 CGI HTTP 헤더의 완전한 세트를 반환하지 않는 방법으로 추문 응용 프로그램 .

나는 내가 지금

use lib '//newhost/LIB'; 

점검이 일이 내가

use lib 'd:/myorig/LIB'; 

을하는 데 사용 어디에 내 호스트 회사의 누군가가 수 있도록 내 스크립트를 수정 한 것을 알?

나는 1800 정보의 제안을 시도하고 동일한 결과를 준

#!perl -w 
use lib '//whatever/lib'; 
print "success"; 

의 최소한의 스크립트를 ... 달렸다.

업데이트 : ysth의 FatalsToBrowser 제안은 실제로 더 많은 정보를 나타 냈습니다. 경로 (호스팅 업체의 누군가가 추가 한 경로)가 잘못되었을 수 있습니다.

업데이트 2 : 호스팅 회사는 이전 호스트 마음과 변함없이 이러한 스크립트가 많은 구문 오류를 던지고 있다고 말합니다. "스크립트를 디버깅 할 수 없으므로 원래 프로그래머에게 연락하여 도움을 요청하십시오." <grinds teeth>

부분적인 해상도 : 호스팅 회사는 마침내 그들이 올바르게 사용 권한을 설정하지 않았다는 것을 깨달았습니다. 그들은 여전히 ​​옳지 않으며, 사이트 소유자가 자신의 사이트 내의 폴더조차도 폴더 권한을 설정할 수 없도록합니다 (aargh).

답변

2

아니요 경로가 불완전합니다. 서버 이름과 전체 경로가 모두 필요합니다. 응용 프로그램이 작동하기보다는 두 대의 컴퓨터를 모니터해야하기 때문에 좋지 않은 관행입니다.

+0

+1 두 기계에 대한 설명 –

3

작동 여부는 모르겠지만 제 직감은 괜찮을 것입니다. 그러나 게시 한 두 개의 use lib 행은 동일하지 않습니다.

# go to the 'd' drive and use the 'myorigLIB' directory on that drive 
use lib 'd:/myorigLIB'; 

# go to the 'newhostLIB' server - no path is specified - this looks invalid to me 
use lib '//newhostLIB'; 

아마도 서버의 공유 경로를 지정해야합니까? 또한 사용 권한을 확인해야 할 수도 있습니다. 어쩌면 CGI가 실행중인 사용자가 해당 네트워크 경로에 액세스 할 수 없습니까?

또한, 당신은 당신의 이론을 테스트하는 간단한 (비 CGI) 프로그램을 작성할 수 있고 그냥 실행하면 무슨 일이 일어나는지 볼 수있는 경우

#!perl -w 
use lib '//whatever/lib'; 
print "success"; 

가 그럼 그냥 서버에 그것을 실행합니다.

1
The specified CGI application misbehaved by not returning a complete set of HTTP headers. 

이는 오류가 아닙니다. 운이 좋으면 호스팅 회사에서 오류 로그를 작성하여 펄이 죽어 가고있는 실제 오류를 보여줍니다.그렇지 않은 경우, 테스트를 위해

use CGI::Carp "fatalsToBrowser"; 

을 사용하는 것이 좋습니다. (당신이 편집 적이라면 (나쁜 일은 아니다), 오류가 일반적으로 코드 또는 데이터베이스에 대한 정보를 제공하여 블랙 햇이 보안을 악용하는 데 도움이 될 수 있기 때문에 테스트가 완료되면 활성화 된 상태로 두지 않는 것이 좋습니다. 구멍).

1

나는 아파치 사용자가 네트워크 드라이브를 사용할 수 없기 때문에 아파치에서 매핑 된 드라이브와 unc 경로를 사용하려고 할 때 문제가 있음을 알고있다. 알아 내기 힘들었지 만 할 수 있습니다. 관련 문제 일 수 있습니다.

1
#!perl -w 

print "HTTP/1.0 200 OK\nContent-Type: text/plain\n\n"; 

my $path = "//whatever/lib"; 
print "\nExists ", -e $path; 
print "\nDirectory ", -d $path; 
print "\nReadable ", -r $path; 
print "\nListing:\n"; 
print "\t$_\n" for glob "$path/*"; 
관련 문제