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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Apache

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

Q&A

解決済

4回答

2988閲覧

CGIファイルが起動できない

trm

総合スコア117

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Apache

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

0グッド

1クリップ

投稿2018/09/25 23:16

編集2018/09/26 06:23

index.html から b1.cgiを起動しようとするとブラウザにINTERNAL SERVER ERROR と表示されます。

index.htmlは以下のコードです。

html

1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <title>Eurasia</title> 5 <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> 6 </head> 7 8 <body bgcolor="#000066" text="#000000" link="#0000ee" alink="#0000ee" vlink="#551a8b"> 9 <font color="#ff0000"><big><big><big>現在ウェブ店舗作成中<br>ご利用までにはしばらく<br>お待ちください。<br> 10 <br> 11 ユーラシア(TRM出版)</big></big></big></font><font color="#ff0000"><big><big><big><br> 12 </big></big></big></font><font color="#ffffff">年会費×,×××円で本(実物商品)がネットで販売できる!販売手数料は××%、××%割引販売、他CD・DVD・ソフトウェア・ビデオゲームも販売できます!電子ファイルは年会費○円で○○○○手数料だけいただきます。<br><br> 13 </font><a href="http:/trm7.mydns.jp/cgi-bin/b1.cgi"><img src="http://trm7.mydns.jp/buhin/btn056_09_4.gif" 14 alt="http://trm7.mydns.jp/cgi-bin/b1.cgi" width="180" height="30"> 15   <br> 16 </a><a href="http://trm7.mydns.jp/cgi-bin/b2.cgi"><img src="http://trm7.mydns.jp/buhin/btn056_09_5.gif" 17 alt="http://trm7.mydns.jp/cgi-bin/b2.cgi" width="180" height="30"> 18   <br> 19 </a><a href="http://trm7.mydns.jp/cgi-bin/60a11.cgi"><img src="http://trm7.mydns.jp/buhin/btn056_09_6.gif" 20 alt="http://trm7.mydns.jp/cgi-bin/60a11.cgi" width="180" height="30"> 21   <br> 22 </a><a href="http://trm7.mydns.jp/cgi-bin/c1.cgi"><img src="http://trm7.mydns.jp/buhin/btn056_09_7.gif" 23 alt="http://trm7.mydns.jp/cgi-bin/c1.cgi" width="180" height="30"> 24   <br> 25 </a> 26</body> 27</html>

b1.cgiは以下のコードです。

perl

1#!/usr/bin/perl 2use strict; 3use utf8; 4binmode(STDOUT,":utf8"); 5 6print "Content-type: text/html\n\n"; 7print <<"HTML"; 8<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9<html> 10<head> 11 <title>ユーザーアカウント登録(お客様)</title> 12</head> 13<body> 14 15<form action="b2.cgi"> 16<table> 17 <tr> 18 <td>希望ユーザーID:</td> 19 <td><input type="text" name="kokyakuID" size="40" maxlength="30"></td> 20 </tr> 21 <tr> 22 <td>希望パスワード:</td> 23 <td><input type="password" name="kokyakupass" size="40" maxlength="30"></td> 24 </tr> 25 <tr> 26 <td>パスワード確認:</td> 27 <td><input type="password" name="kokyakupass2" size="40" maxlength="30"></td> 28 </tr> 29 <tr> 30 <td>氏名:</td> 31 <td><input type="text" name="kokyakushimei" size="40" maxlength="30"></td> 32 </tr> 33 <tr> 34 <td>〒:</td> 35 <td><input type="text" name="kokyakuyuubinbangou" size="40" maxlength="30"></td> 36 </tr> 37 <tr> 38 <td>住所:</td> 39 <td><input type="text" name="kokyakujuusyo" size="40" maxlength="30"></td> 40 </tr> 41 <tr> 42 <td>メールアドレス:</td> 43 <td><input type=""text"" name="kokyakumail" size="40" maxlength="30"></td> 44 </tr> 45<tr> 46<td><textarea name="kokyakumojijouhou" rows="4" cols="40" readonly></textarea><br></td> 47</tr> 48<tr> 49<th> 50<input type="submit" onclick="location.href'b2.cgi'" value="送信"> 51<input type="reset" value="リセット"></th><td></td> 52</tr> 53 54 55</table> 56</tbody> 57</form> 58<br> 59<br> 60</body> 61</html> 62HTML 63exit; 64 65 66 67 68 69 70# <tr> 71# <td>このサイトについてご意見を書いて下さい</td> 72# <td><textarea name="mess" cols="40" rows="5"></textarea></td> 73# </tr> 74#</table> 75#</form> 76#</body> 77#</html> 78#HTML 79# 80#exit;

CentOS7のエラーログは以下の通りです。

error_log

1[Wed Sep 26 07:53:45.819439 2018] [cgi:error] [pid 2596] [client 2400:4050:a1:6200:d253:49ff:fe36:e025:35307] AH01215: (2)No such file or directory: exec of '/var/www/cgi-bin/b1.cgi' failed, referer: http://trm7.mydns.jp/ 2[Wed Sep 26 07:53:45.831447 2018] [cgi:error] [pid 2596] [client 2400:4050:a1:6200:d253:49ff:fe36:e025:35307] End of script output before headers: b1.cgi, referer: http://trm7.mydns.jp/

どこが間違っているのかご指摘よろしくお願い致します。

httpd.confの内容は以下の通りです。

httpd.conf

1ServerRoot "/etc/httpd" 2Listen 80 3Include conf.modules.d/*.conf 4User apache 5Group apache 6ServerAdmin root@trm7.mydns.jp 7 8ServerName trm7.mydns.jp:80 9<Directory /> 10 AllowOverride all 11 Require all granted 12</Directory> 13DocumentRoot "/var/www/html" 14<Directory "/var/www"> 15 AllowOverride all 16 # Allow open access: 17 Require all granted 18</Directory> 19<Directory "/var/www/html"> 20 Options FollowSymLinks 21 AllowOverride all 22 Require all granted 23</Directory> 24<IfModule dir_module> 25 DirectoryIndex index.html 26</IfModule> 27<Files ".ht*"> 28 Require all denied 29</Files> 30<VirtualHost> 31<VirtualHost> 32ErrorLog "logs/error_log" 33LogLevel warn 34<IfModule log_config_module> 35 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 36 LogFormat "%h %l %u %t \"%r\" %>s %b" common 37 38 <IfModule logio_module> 39 # You need to enable mod_logio.c to use %I and %O 40 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 41 </IfModule> 42 43<VirtualHost> 44 CustomLog "logs/access_log" combined 45</IfModule> 46 47<IfModule alias_module> 48 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 49</IfModule> 50<Directory "/var/www/cgi-bin"> 51 AllowOverride all 52 Options ExecCGI 53 Require all granted 54</Directory> 55<IfModule mime_module> 56 TypesConfig /etc/mime.types 57 AddType application/x-compress .Z 58 AddType application/x-gzip .gz .tgz 59 AddType text/html .shtml 60 AddOutputFilter INCLUDES .shtml 61</IfModule> 62AddDefaultCharset UTF-8 63<IfModule mime_magic_module> 64 MIMEMagicFile conf/magic 65</IfModule> 66EnableSendfile on 67IncludeOptional conf.d/*.conf

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

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

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

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

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

showkit

2018/09/26 00:08

「No such file or directory: exec of '/var/www/cgi-bin/b1.cgi'」と出ていますが '/var/www/cgi-bin/b1.cgi' は間違いなく存在していますか?
trm

2018/09/26 00:15

'/var/www/cgi-bin/b1.cgi' とはどこにも書いていないんです。全て'trm7.mydns.jp/cgi-bin/b1.cgi'と記述しているんです。そのファイルは存在します。
m.ts10806

2018/09/26 01:33

どこにでしょうか。 >そのファイルは存在します。
m.ts10806

2018/09/26 01:35 編集

trm7.mydns.jpはブラウザからアクセスする際のドメインであって動作しているサーバー上のパスはあくまで/var/www/ですよ。ドキュメントルートが/var/www/になっているんでしょう。いずれにしてもサーバー上の/var/www/cgi-bin/の配下にそのCGIファイルを置く必要があります。
m.ts10806

2018/09/26 02:03

前の質問が解決したように見えませんが新たに質問を立てたのはなぜですか?本当に解決したならこの質問は立てる必要なさそうなものですが。一切進んでないように見受けられます。
trm

2018/09/26 02:08

'/var/www/cgi-bin/'にb1.cgiは置いてあります。
guest

回答4

0

ベストアンサー

/var/www/cgi-bin/b1.cgi を直接コマンドラインから実行してみるとどうなりますか?
実行できますか?

投稿2018/09/26 02:23

ssasaki

総合スコア1167

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

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

trm

2018/09/26 05:21

printの内容が文字づらがそのままで「端末(CentOS7)」に出力されました。
ssasaki

2018/09/26 06:25

正常に実行されたようですね。 ちなみに、、 $ perl /var/www/cgi-bin/b1.cgi ではなく、 $ /var/www/cgi-bin/b1.cgi で実行したのですよね? であれば原因はわからないのですが、このエラーはCGIファイルの先頭に書かれている #!/usr/bin/perl の記載がおかしい時に発生している可能性が高いです。 単にpathが違う等々もありますが、例えば下記の記事のような見た目にはわかりづらい原因の場合もありますので、今一度確認し見てることをおすすめします。 https://mgng.mugbum.info/664
trm

2018/09/26 06:42

$ perl /var/www/cgi-bin/b1.cgi で実行しました。 $ /var/www/cgi-bin/b1.cgi で実行すると、 bash: /var/www/cgi-bin/b1.cgi: /usr/bin/perl^M: 誤ったインタプリタです: そのようなファイルやディレクトリはありません と表示されました。
ssasaki

2018/09/26 06:58

その内容だと、先ほどのURLの現象そのままですね。 見た目にはわからないですが、#!/usr/bin/perl の行末に制御文字が入っています。 https://mgng.mugbum.info/664 の内容を確認してみてください。
trm

2018/09/26 09:16

ファイルをUTF-8Nにしたのですが(多分、前の件ではそれでOKであった)、 # /var/www/cgi-bin/b1.cgi を実行すると今度は /var/www/cgi-bin/b1.cgi: 行 1: #!/usr/bin/perl: そのようなファイルやディレクトリはありません /var/www/cgi-bin/b1.cgi: 行 2: use: コマンドが見つかりません /var/www/cgi-bin/b1.cgi: 行 3: use: コマンドが見つかりません /var/www/cgi-bin/b1.cgi: 行 4: 予期しないトークン 'STDOUT,":utf8"' 周辺に構文エラーがあります /var/www/cgi-bin/b1.cgi: 行 4: 'binmode(STDOUT,"utf8");' と表示されます。一体何なのでしょう?
ssasaki

2018/09/26 10:33

#!/usr/bin/perl の前に何か変な文字が入っているのですかね? 以下のコマンドを実行するとどのように返ってきますか? # file /var/www/cgi-bin/b1.cgi
trm

2018/09/26 10:57

/var/www/cgi-bin/b1.cgi: perl script, UTF8 Unicode (with BOM) text executable と出ます、あれえ?前はうまく行ったのになあ…
ssasaki

2018/09/26 11:01

with BOMと出ていますね。 BOM付だとスクリプトは動かないので、BOMを除去してください。 UTF-8Nで保存したのであればBOM無しになっているはずですが、再度確認してみてくださいい。
trm

2018/09/26 14:34

できました!本当に長いこと、ありがとうございました!
guest

0

おそらく直接的な原因は、windowsからCentOSにスクリプトファイルを持っていった際に改行コードの変換をし損ねていることですね。
/usr/bin/perl^M なんてファイルはないので実行に失敗している。

投稿2018/09/26 08:17

KojiDoi

総合スコア13669

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

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

0

WebサーバでCGIを起動するためには、Webサーバ側で設定が必要です。

Apache:CGIの利用設定をする の記事に書かれているのが一般的な(ごく簡単な)設定だと思います。

httpd.confファイルが上記記事のように(ScriptAlias /cgi-bin/ "/var/www/cgi-bin/")設定されている事で、ブラウザから"http://trm7.mydns.jp/cgi-bin/b1.cgi"とアクセスされると、webサーバが稼働しているマシンの"/var/www/cgi-bin/b1.cgi"が呼び出されるようになるのです。

「'/var/www/cgi-bin/b1.cgi'」 とはどこにも書かれていませんが、「ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"」という設定と、「http://trm7.mydns.jp/cgi-bin/b1.cgi」というURLの二つが合わさって、'/var/www/cgi-bin/b1.cgi'というファイルが呼び出されることになるのです。

エラーメッセージは、「No such file or directory: exec of '/var/www/cgi-bin/b1.cgi'」('/var/www/cgi-bin/b1.cgi'を実行しようとしましたが、そんなファイルもしくはディレクトリが在りません)と言っています。

以下のような問題が生じているのだと思われます
1.'/var/www/cgi-bin/b1.cgi'というファイル、もしくは'/var/www/cgi-bin','/var/www','/var'といったディレクトリが無い。
2.httpd.confのScriptAliasの記述に誤りがあって、存在しないディレクトリを指定している。

==
httpd.confの内容を質問に追加してください。そうすればhttpd.confの記述が正しいかどうかが分ります。
Webサーバに使っているプログラムの種類とバージョンの情報もあったほうが良いです。

投稿2018/09/26 01:56

coco_bauer

総合スコア6915

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

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

trm

2018/09/26 05:45

ウェブサーバとバージョンは CentOS Linux release 7.0.1406(Core) です。
guest

0

http://trm7.mydns.jp/cgi-bin/b1.cgiでアクセスされる/var/www/cgi-bin/b1.cgiが存在しないというエラーです。b1.cgiというファイルの置き場所を間違えています。
http://trm7.mydns.jp/cgi-bin/b1.cgiというURLでアクセスしたいのなら/var/www/cgi-bin/b1.cgiに置いてください。あと、実行権限も付けてなければ付けてください。

あと、<a href="http:/trm7.mydns.jp/cgi-bin/b1.cgi">でホスト名の前のスラッシュが足りないです。

投稿2018/09/26 00:56

otn

総合スコア84423

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

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

trm

2018/09/26 01:04

本物は'//'となっていました。
otn

2018/09/26 11:21

早とちりで失礼しました。ファイルの置き場を間違えていたら、404エラーですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問