2016-10-31 3 views
0

私はcgiとPerlを初めて使っていますが、私はperlスクリプトを使ってWebページのENVを表示しようとしています。私は自分のcgi-binディレクトリの中にある.plページを指し示すvhost1ディレクトリの中にindex.htmlページを作成しました。ディレクトリパスは、対応する/var/www/html/vhost1/index.htmlおよび/var/www/html/vhost1/cgi-bin/first.plの順番に従います。 .plリンクをダウンロードして新しいブラウザタブで開くのではありません

<html> 
<head> 
</head> 
<body> 
<h1>Hello World!</h1> 
<a href = "cgi-bin/first.pl" target="_blank"> My First Perl Page</a> 
</body> 
</html> 

を以下のように私のindex.htmlコードがあると私の.plページがあり、私は私のホームページに私のURLパスが http://131.183.223.173/vhost1/

でこのプロジェクトを完了するために、Centos7を使用しています

#!usr/bin/perl 

print "Content-type: text/html \n\n "; 
print "Hello, Nate"; 
foreach $key (sort keys %ENV) 
{ 
print "$key -> $ENV($key) <br>\n"; 
} 

のように見えます

私のENV結果は、コンピュータにダウンロードされずに新しいタブに表示されます。

+1

CGIスクリプトとして.plファイル(またはcgi-binディレクトリ内のすべてのファイル)を処理するようにサーバに指示する必要があります – ikegami

+0

また、 '#!usr/bin/perl'は'#!/ usr/bin/perl' – ikegami

+2

最後に、常に 'use strict;警告qw(all);を使用します。それはあなたのプログラムに重大で軽微な誤りを見いだします。 (しかし、あなたのHTMLインジェクションエラーは見つかりません) – ikegami

答えて

0

これは、HTMLやPerlプログラムとはまったく関係がありません。これはWebサーバーの設定に依存します。あなたのWebサーバー(私が想定しているのはApacheです)は、/var/www/html/vhost1/cgi-bin/をCGIディレクトリとして認識するように設定する必要があります。

仮想ホストの設定ファイルには、このようなものが必要です。

ScriptAlias /cgi-bin/ "/var/www/html/vhost1/cgi-bin/" 

それとも

<Directory "/var/www/html/vhost1/cgi-bin/"> 
    Options +ExecCGI 
    AddHandler cgi-script .pl 
</Directory> 

それが修正されていたら、あなたのブラウザに送信されたソースコードを取得して停止します。しかし、その時点で、ほぼ確実に "500エラー"ページが表示されます。その後、CGIプログラムのエラーを修正する作業を行うことができます(間違ったシバン行とコンテンツタイプのヘッダから始まる)。

関連する問題