2

localhost サーバー (Linux プラットフォームの Apache 2.2) にファイルをアップロードしようとしていますが、Internal Server Error 500が発生します。

サーバーは正常に動作しています (CGI スクリプトを使用してすべての環境変数を出力できるため)、何度もグーグル検索しても道がわかりません。

これは私のHTMLコードです:

<FORM ACTION="http://localhost/cgi-bin/upload.cgi" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="photo">
<INPUT TYPE="submit" NAME="Submit" VALUE="Submit Form">
</FORM>

これは、このファイルに完全な許可を与えた /var/www/cgi-bin に配置されている私の cgi スクリプトです。

#!/usr/bin/perl -w
use CGI;

$upload_dir = "/home/myuser/Desktop/upload";
$query = new CGI;
$filename = $query->param("photo");
$filename =~ s/.*[\/\\](.*)/$1/;
$upload_filehandle = $query->upload("photo");

open UPLOADFILE, ">$upload_dir/$filename";
while ( <$upload_filehandle> )
{
print UPLOADFILE;
}
close UPLOADFILE;

print $query->header ();

print <<END_HTML;
<HTML>
<HEAD>
<TITLE>Thanks!</TITLE>
</HEAD>
<BODY>
<P>Thanks for uploading your photo!</P>
    <P>Your photo:</P>
<img src="/home/myuser/Desktop/upload/$filename" border="0">
</BODY>
</HTML>

上記の簡単な問題を解決するためのヒントを誰か教えてください。ありがとう。

4

2 に答える 2

0

警告またはエラー メッセージについては、Apache エラー ログ (多くの場合、/var/log/httpd/error_log にあります) を確認してください。問題は、Web サーバーがアップロード ディレクトリに書き込めないことにあると思われます。

于 2012-05-25T08:13:01.090 に答える
0

print "コンテンツタイプ: text/html\n\n"; これは、受信側の Web ブラウザーに、受信しようとしているデータの種類 (この場合は HTML ドキュメント) を伝える content-type ヘッダーです。含めるのを忘れた場合、またはこのヘッダーを印刷する前に別のものを印刷した場合、CGI プログラムにアクセスしようとしたときに「内部サーバー エラー」が発生します。

END_HTML も EOF にありません。

于 2013-04-07T11:39:15.053 に答える