2010-11-28 3 views
0

ウェブサーバーに「a.cpm」というファイルがあります。私はあなたがasdasd.com/a.cpmに行くときにCGI perlスクリプトを起動するハンドラを持っています。私はファイルを読んでデータを印刷しようとしましたが、何もしません。私のPerl CGIスクリプトからWebサーバー上のファイルを読み込んでデータを印刷するにはどうしたらいいですか?

#!/usr/bin/perl 
print "Content-type:text/html\r\n\r\n"; 
print "test string"; 
print "<br>"; 
$filepath = $ENV{'PATH_TRANSLATED'}; 
open FILE, $filepath or die $!; 
my @lines = <FILE>; 
while (my $line = <FILE>) 
{ 
print $_; 
} 
+2

、あなたのウェブサーバのエラーログを確認しましたか?あなたはHello World CGIスクリプトを試しましたか? – cjm

+0

Liam、これをテストできましたか? – Philar

答えて

0

ハンドラが正常に動作していて、CGIスクリプトのファイルアクセス許可chmod a+xを変更した場合は、以下のコードに示すようにCGIモジュールを使用することをお勧めします。

#!/usr/bin/perl 
use CGI qw(:standard); 
print <<HTML; 
Content-type: text/html 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head><title>Path Translated</title></head> 
<body> 
HTML 

$filepath = $ENV{'PATH_TRANSLATED'}; 
open FILE, $filepath or die $!; 
my @lines = <FILE>; 
while (my $line = <FILE>) 
{ 
    print $_; 
} 

print <<HTML; 
</body> 
</html> 
HTML 

EDIT:テイントは、Webアプリケーションのためのより多くのように、チェックの警告をオンにすると、厳密なを使用して良い方法です。

#!/usr/bin/perl -wT 
use strict; 
+0

汚れチェックをオンにすると、ファイルを開く前に '$ ENV {'PATH_TRANSLATED'}'をアンインストールする必要があります。 – cjm

2

あなたはbrian d foyHow can I troubleshoot my Perl CGI script?を読み、その提案を通じ続くことがありますか?

+0

次回はhttp://stackoverflow.com/questions/2165022/how-can-i-troubleshoot-my-perl-cgi-script – daxim

+0

@daxim、ありがとうございます。私は彼がそれをSOに移したと思ったが、私はそれを見つけることができなかった。 – cjm

0

受け入れ答えは、箱から出して動作しません - ここにないわずかな変化である - ちょうどfile.txtへのパスを調整します

#!/usr/bin/perl 
use CGI qw(:standard); 
print <<HTML; 
Content-type: text/html 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head><title>Path Translated</title></head> 
<body> 
HTML 

open FILE, "file.txt" or die "could not open filename"; 
while(<FILE>) { 
    print $_; 
} 
close FILE; 

print <<HTML; 
</body> 
</html> 
HTML 
関連する問題