Web Appsの原因と修正。

500内部サーバーエラー

。..そしてそれを修正する方法。短い答え:これは通常、あなたのCGIscriptの権限エラーであり、修正するのは簡単です。 FTPクライアント、またはwebサイトのfilemanagerに移動し、CGIスクリプトを強調表示または右クリックします。 次に、プロパティ、権限、または”Chmod”を選択し、world-executable:that’s0755、またはa+rx、または-rwxr-xr-xに設定します。0777(a+rwxまたは-rwxrwxrwx)を使用しないでください。 そして、あなたのcgi-binディレクトリ自体も0777ではなく0755でなければなりません。

長い答え:FileChuckerやuserbaseのようなPerl CGIスクリプトを実行すると、ブラウザに”Internal Server Error”というメッセージが表示されることがあります。 メッセージは通常、”詳細については、サーバーのエラーログを確認してください。 エラーログに出力されるメッセージは、問題が何であるかを正確に伝えることがよくあります。 たとえば、Apacheエラーログは、/var/log/apache/error_logまたは/var/log/apache2/error_log(または時には”エラー。ログ”)。

エラーログにアクセスできない場合は、スクリプトのバックアップコピーを作成し、元のものを開いてすべての内容を削除し、これらの3行だけをフ:

#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";

(注:サーバーがWindowsシステムの場合は、上記の最初の行を#!perlまたは#!c:\path\to\perl…..exe”を起動します。)

ブラウザのページに再度アクセスしてみてください。 それが動作する場合(”テスト”が表示されます。..”その出力として)あなたはあなたのサーバーが少なくともPerl CGIスクリプトを実行するためのconfiguredproperlyであることを知っています。 それがうまくいかない場合、それは問題があなたのCGIscriptではなくサーバー構成にあるかもしれないことを意味します。 (たとえば、実際にPerlがインストールされていると確信していますか? 事実上すべてのUNIX/Linux/OS xサーバーが実行しますが、Windowsサーバーは通常、ActivePerlのような無料のパッケージから手動でインストールする必要があります。)

サーバーがCGIスクリプトを実行するために適切に構成されていると仮定すると、問題は内部サーバーエラーの一般的な原因のいずれかである可能性があります。

スクリプト外の問題:

  1. ディレクトリ権限: あなたのcgi-binディレクトリは、0777ではなく0755としてchmoddedする必要があります。 同様に、あなたのスクリプトがである場合。../cgi-bin/foo/bar。cgiでは、fooディレクトリはワールド書き込み可能であってはなりません(0777)。 これは、セキュリティ上の予防措置として、多くのサーバがworld-writabledirectories内でCGIスクリプトの実行を拒否するためです。
  2. ファイルのパーミッション:CGIスクリプト自体も、同じ理由で0777ではなく0755でなければなりません。
  3. 転送モード:FTPを使用してCGIスクリプトをyourserverに転送している場合、FTPクライアントはおそらく自動転送モードに設定されています; それは、あなたをaskingせずにバイナリモードまたはASCIIモードを使用するかどうかを把握しようとします。 しかし、あなたのCGIスクリプトがaWindowsまたはUNIXシステムから来たかどうか、そしてそれがWindowsまたはUNIXsystemに行くかどうかに応じて、CGIスクリプトを転送する前に、FTPクライアントがASCIIorバイナリモードのいずれかを使用するように手動で設定する必要があるかもしれません。 一方を試してみて、もう一方を試してみてください。
  4. 行末:転送モードの問題の原因は、実際には別の問題です:異なるタイプのオペレーティングシステム(すなわち、Windowsvs。 UNIX/Linux/すべて)を表すために異なる文字コードを使用しますライン語尾。 あなたのサーバがUNIXサーバで、UNIXスタイルの行末を使わないテキストエディタを使ってWindowsコンピュータ上であなたのCGIスクリプトを編集している場合、それは問題を引き起こすでしょう。 GoliveやDreamweaverのようなアプリケーションでは、これが間違っていることがあります。 組み込みのエディタでさえ、ワードパッド(ワードではない)はそれを正しく取得するようですが、notepadはそれを台無しにします。 ですから、&を開いてCGIスクリプトを別のテキストエディタで保存して、もう一度サーバにアップロードしてみてください。

スクリプト内の問題:

  1. シェバン線: CGIスクリプトの最初の行には、サーバー上のPerlバイナリへのパスが含まれている必要があります。 ほとんどのUNIXサーバーでは、これは#です!/usr/bin/perlまたは時には#!/usr/local/bin/perlを実行すると、常に”which perl”コマンドを実行して確認します。 Windowsserversでは、#!を使用するだけで逃げることができます。perlですが、#のようなフルパスを指定する必要があるかもしれません!c:\path\to\perl…..exe”を起動します。
  2. 実際のスクリプトエラー:Perlコード自体に単にエラーがある可能性があります。 Encodable Industriesから購入したスクリプトに問題がある場合は、他の多くの人が同じ正確なスクリプトを購入し、ちょうどそれを実行しているので、これは起こり

関連する問題

  1. CGIスクリプトのもう一つの一般的な問題は、スクリプトheaderserrorのpremature終わりです。

Leave a Reply