2013-05-23 8 views
-2

웹 페이지의 데이터베이스 테이블에서 모든 값을 인쇄하는 .cgi 파일을 테이블 형식으로 만듭니다. 문제는 퍼티 터미널 에뮬레이터에서 파일을 실행할 때 브라우저에서 파일을 실행하려고하면 T가 서버에 파일의 정확한 위치를 입력 했는데도 "파일을 찾을 수 없습니다"라는 오류 메시지가 나타납니다.CGI 스크립트가 브라우저에서 실행되지 않습니다.

내가 뭘 잘못하고 있는지 이해할 수 없습니까? putty를 사용하여 chmod 755 *에 대한 내 파일의 권한을 설정했지만 여전히 작동하지 않습니다.이 파일 권한 또는 테이블 구조의 문제는 다른 브라우저에서 실행하는 경우에 잘못입니까?

people.CGI이

#!/usr/bin/perl 
use CGI; 
use DBI; 
use strict; 
#use warnings; 
#use diagnostics; 
print "Content-type:text/html\r\n\r\n"; 
#$q = CGI->new; 
#print $q->header; 
my $dsn = "DBI:mysql:Demo:localhost"; # Data source name 
my $username = "mint";     # User name 
my $password = "MINT123";    # Password 
my $dbh; 
my $sth;       # Database and statement handles 
$dbh = DBI->connect($dsn, $username, $password); 

$sth = $dbh->prepare("SELECT * from people"); 

$sth->execute(); 

print "<h1>ganesh</h1>"; 
print "<table > 
<tr> 
<th>ID</th> 
<th>Name of People Involved</th> 
<th>Position</th> 
<th>Roles(A user can have multiple roles)</th> 
<th>Notes</th> 
</tr>"; 
while(my $href = $sth->fetchrow_hashref) 
{ 
    print "<tr>"; 
    print "<td>$$href{'id'}</td>"; 
    print "<td>$$href{'name'}</td>"; 
    print "<td>$$href{'pos'}</td>"; 
    print "<td>$$href{'role'}</td>"; 
    print "<td>$$href{'notes'}</td>"; 
    #print "<td><input type='text' value=\"$$href{'display_name'}\" id =\"dis-$$href{'windows_id'}\" readonly> </td>"; 
    #print "<td><input type='text' value=\"$$href{'email_id'}\" readonly> </td>"; 
    print "</tr>"; 
} 
print "</table>"; 

$sth->finish(); 
$dbh->disconnect(); 

데이터베이스 테이블 구조 파일

도와주세요 ... ...

enter image description here

테이블 데이터 ...

enter image description here

내가 퍼티에서 파일을 실행

출력 ... 난 내 브라우저에서 파일을 실행하려고

enter image description here

메시지 ... 당신이받은

enter image description here

답변

11

두 답변 이전에는 완전한 말도 안돼. CGI 프로그램을 실행하기 위해 CGI 객체를 사용할 필요는 없습니다. 물론 더 쉽게 만들지 만 필요하지는 않습니다.

프로그램에서 처리해야하는 CGI 프로토콜의 유일한 부분은 Content-Type 헤더입니다. 그리고 당신은 당신의 인쇄 라인으로 그렇게하고 있습니다.

아니요, 문제가 완전히 해결되었습니다. 그러나 불행히도, 우리가 훨씬 더 많은 것을 알지 못하면 거의 도움이되지 못하는 곳입니다. 웹 서버에서 코드를 찾을 수 없기 때문에 파일을 찾을 수 없습니다. 즉, 브라우저에 입력하는 주소 (128.9.45.170/~pankaj.yadav/Test/cgi/people.cgi)가 웹 서버의 파일 이름과 일치하지 않습니다.

이 모든 것이 웹 서버 구성 방법에 달려 있습니다. 웹 주소는 파일 경로에 어떻게 매핑됩니까? 우리는 모른다. 웹 서버 관리자 만 답변을 알 수 있습니다.

웹 서버 오류 로그를 보면 단서를 얻을 수 있습니다. 웹 서버가 찾으려하는 실제 파일 경로를 포함하는 로그에 파일을 찾을 수 없음 오류가 표시됩니다. 그리고 그것은 여러분이 CGI 프로그램을 어디에 넣어야 할지를 결정하는 데 도움이 될 것입니다.

+0

어리석은 저, 고마워요 데이브. –

+1

대부분의 사람들은 CGI.pm을 사용하여 더 이상 웹 응용 프로그램을 작성하지 않으며, CGI 환경에서 실행되는 응용 프로그램도 더 이상 사용하지 않습니다. [Mojolicious] (http://mojolicio.us) 애플 리케이션은 당신이 CGI에 따라 배포해야하는 경우 작업의 모든하면 (예를 들어 아파치가) 다음의 서버 것을 알고 테스트하고 디버그 (나는 댄서가 너무 확신) 훨씬 쉽게 구성. 그냥 내 $ 0.03 (인플레이션) –

+1

"Mojolicious 응용 프로그램 테스트 및 디버그 (나는 댄서가 너무 확신)하기가 훨씬 쉽다"- 기본적으로 당신이 PSGI에서 실행 아무것도 할 수 있습니다. –

관련 문제