質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

1回答

3517閲覧

Internal Server Error:500 Apatche で.cgiファイルを動かしたい

Ezerk

総合スコア12

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

0グッド

0クリップ

投稿2016/10/08 03:32

編集2022/01/12 10:55

Apatcheでwebサーバーを立ち上げて"/var/www/cgi-bin" デレィクトリに.cgiファイルを置いたのですがInternal server errorによりファイルを実行することができません。
エラーログは以下の通りです。
(2)No such file or directory: exec of '
Premature end of script headers:

追記 エラーが下記に変わりました
(8)Exec format error: exec of

-httpd.confなど必要な設定は終えています
-ディレクトリのパーミションも755にしています

おなじ"/var/www/cgi-bin"デレィクトリにおいた別の.cgiファイルは実行できるのですがなにか原因は考えられますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A.Ichi

2016/10/08 03:58

考えられるのは、先頭行の#!記述間違いと権限が無い事でしょうか?
Ezerk

2016/10/08 04:00

path と権限は確認しております。
A.Ichi

2016/10/08 04:08

先頭行にCRLFが付いていませんでしょうか?環境にもよりますが。
Ezerk

2016/10/08 04:10

ご回答いただきありがとうございます。改行は cat -e filenameでLFになっていることを確認しています。
A.Ichi

2016/10/08 04:23

色々とお聞きしましたが、後、思いつくのは#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" → Alias /cgi-bin/ "/var/www/cgi-bin/" 位です。お力になれずすみません。
Ezerk

2016/10/08 04:31

もうすこし調べてみようと思います。
toritoritorina

2016/10/08 07:50

別のcgiファイルが同じperl、python等のスクリプトなら、スクリプト内での改行コードが他と違う、等はないですか。
Ezerk

2016/10/08 13:46

スクリプト内の改行は全て同じになっています。原因がつかめません
suama

2016/10/10 13:49 編集

使っている言語を教えていただけると、デバッグ用のメッセージの出し方を提示しやすいので、可能なら言語を教えてください。また、サーバに入って、問題の.cgiを実行してみる場合は、エラーは出ないのでしょうか? 必要としているモジュールがCGIの動作環境からでは読み込めていない、とかの場合もあったりしますし。Apacheのエラーログ側に何かでているかもしれませんので、そちらもなにか出ていましたら可能な範囲で追記をお願いします。
guest

回答1

0

いわゆる「スクリプト」でCGI用のプログラムを書くときは、一番最初の行に次のように書きます。

#! インタプリタ

「インタプリタ」の箇所は、スクリプトを実行するプログラムのフルパスです。「/usr/bin/perl」などですね。

なお、先頭の「#」の前には何も入れてはいけません。たとえば一部のテキストエディタは、作成したテキストを保存するときに文字コードに「ユニコード (UTF-8)」などを指定すると、保存したファイルの一番最初に3バイトの目に見えないゴミデータ (「バイトオーダマーク」と呼ばれますが、名前通りの役目は果たしません) を挿入します。これがあると、スクリプトをインタプリタによって実行できません。

投稿2016/10/12 13:08

編集2016/10/12 13:12
ikedas

総合スコア4227

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問