CGIでInternal Server Error、error.logにはPremature end of script headersが

こんにちは、山本です。 

つい先日、Perl を利用したシステムで、上記エラーが出ました。
さして古いサーバではなく、別サーバで動いているシステムを持ってきただけだったので、ある意味不思議でした。

とにかく原因を探るため、コンソール上で動くか(OK)、Perlへのパスは間違ってないか、改行コード・文字コードは問題ないか、アクセス権は問題ないか、同じディレクトリの他のCGIはどうか、などなど、一般的な問題探しを行ってみたのですが、全部問題ない動作です。

そもそも、別サーバでは動いているのですから、環境問題にある程度絞ってはみたものの、原因がわかりません。

その後Webで調べてみると、「#!/usr/bin/perl」の引数に「- -」を付ければ直ると書いてありました。
しかし、どうにも理由がハッキリしません。
ですが、動きます。

「- -」は Perl のスイッチをそれ以降オフにするオプションです。
ですので、後は想像になるのですが、Apache が CGI として Perl を呼び出す際、改行の認識の問題などで #! 以降までを引数として渡してしまい、Internal Server Error を起こしているのでは無いかと考えました。

ですので、「- -」を与えることで、最初の1行を本来の実行ファイルのパス指定のみになり、問題が解決されたと言えます。

しかし、実際のところはどうなんでしょうか。
知っている方がいらっしゃれば、是非お教えください。

 山本 悟

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

コメントを残す