2496 CGIを表示するとソースがそのまま表示される

<<トップページへ

CGIを表示するとソースがそのまま表示される
日時: 2012/11/26(Mon) 21:20
名前: さかな
初めまして、最近自宅サーバーが面白そうだなーと思いとりあえずCentOS6.3でホームページをを表示できるようにしてみようとしているものです。(将来的にはほかにも色々してみたいです)
ネットの知識が無いもので、半週間くらい掛かりいろんなサイト様を頼りにどうにかapacheでtest.htmlを表示させることに成功したのですが、CGIテスト用のtest.cgiがどうしても表示できません。
題名のとおりブラウザで表示させるとソースが表示されてしまいます。携帯ブラウザで表示しても一緒でした。以前の質問を見て、httpd.confを書き直しても上手くいきませんでした。どうすればいいかがわからなくなったので質問してみました。
test.CGIの内容は、記述の仕方が分からないので適当に拾ってきてVIでコピペしたものです。内容は
#!/usr/local/bin/perl(←場所は間違ってませんでした。)
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>CGI TEST</TITLE></HEAD>\n";
print "<BODY>\n";
print "CGI TEST<BR>\n";
print "</BODY>\n";
print "</HTML>\n";
です。
問題のページhttp://musukosun.no-ip.org/test.cgi (スマホでアクセスOKでした)

ちなみにhttpdのエラーのところに
[Mon Nov 26 20:06:25 2012] [error] Exception KeyError: KeyError(139978169632736,) in <module 'threading' from '/usr/lib64/python2.6/threading.pyc'> ignored
[Mon Nov 26 20:26:09 2012] [error] [client 78.138.161.142] File does not exist: /var/www/html/cgi-bin/textenv.pl
と2つエラーが書かれています。調べてみたのですが解決しませんでした。
以前は
[error] [client 192.168.0.2] Options ExecCGI is off in this directory: /var/www/html/test.cgi
というエラーも出ていたのですが適当にいじっていたら出なくなりました。
そのとき弄った付近のhttpd.conf

<Directory "/var/www/html">(何も書いてなかったので書いてあったとおりに入れてみました)
Options Includes ExecCGI FollowSymLinks(ここも変えてみました)
AllowOverride All(noneだったのをAllにしてみました)
</Directory>
設定から間違っているのでしょうか・・・

どうすればCGIが正常に表示できるようになるのでしょうか。教えてください

Re: CGIを表示するとソースがそのまま表示される(1)
日時: 2012/11/27(Tue) 06:21
名前: stranger
URL: http://ja.528p.com/
httpd.confで
AddHandler cgi-script .cgi .pl
になっていますか
変更後、httpdを再起動しましたか

test.cgiのパーミッションは変更されましたか

Re: CGIを表示するとソースがそのまま表示される(2)
日時: 2012/11/27(Tue) 13:31
名前: さかな
strangerさん、早速の返信有難うございます。
パーミッションは755,705どちらもだめでした。httpd再起動はしています。

その後、http://vine-linux.ddo.jp/linux/apache/cgi.php#任意のディレクトリでCGIを動作 のページを参考に

<Directory "/var/www/cgi-bin/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>



#
AddHandler cgi-script .cgi .pl



<Directory />
Options ExecCGI FollowSymLinks
AllowOverride None
</Directory>

を上記のように編集してみたのですが、403Forbiddenと出るようになってしまいました。存在しないファイルtest12.cgiと入力してもYou don't have permission to access と言われました。

再起動したときエラーに
[error] Exception KeyError: KeyError(139720559572960,) in <module 'threading' from '/usr/lib64/python2.6/threading.pyc'> ignored

[client 192.168.0.2] Options ExecCGI is off in this directory: /var/www/html/test.cgi
が出ました。
test.cgiは/var/www/cgi-bin/に置いています。



ちなみにviではなくWinSCPで直接開いて編集したのですが、これってあまり良くないのでしょうか

Re: CGIを表示するとソースがそのまま表示される(3)
日時: 2012/11/27(Tue) 14:21
名前: さかな
不思議なことに、このホームページのコンテンツの、Webサーバー構築をもう一度やってみて、その中でドキュメントルート所有者変更をrootにして、その後/var/www/html/にあるtest.cgiとtest1.cgi以外のファイルをすべて消して見たら、先ほどまで表示できなかったのに表示できるようになっていました。

所有者が間違っていたのか、test.cgiとtest2.cgi以外のファイルが邪魔してたのでしょうか?

それとさっきも書いたのですが、viではなくWinSCPで直接開いて編集するのってあまり良くないのでしょうか

この二つが解決したら現在の問題は解決だと思います

Re: CGIを表示するとソースがそのまま表示される(4)
日時: 2012/11/27(Tue) 17:14
名前: stranger
URL: http://ja.528p.com/
/var/www/html/test.cgi
の位置なら
<Directory "/var/www/html">
Options Includes ExecCGI FollowSymLinks
AllowOverride All
</Directory>
AddHandler cgi-script .cgi .pl
の設定で
http://musukosun.no-ip.org/test.cgi
表示できると思う

/var/www/cgi-bin/test.cgi
の位置なら
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
のデフォルトの設定のままで
http://musukosun.no-ip.org/cgi-bin/test.cgi
表示できると思う
ScriptAliasの意味は全てのファイルをスクリプトとして扱います

CentOSで編集したらLF改行
Windowsで編集したらCR+LF改行になると思う
CGIファイルの実効の場合に注意が必要
改行コードが違うとエラーになります
ftpでascii転送にすれば改行コードの調整をしてくれると思う
念のため
CentOS端末で
cat -v test.cgi
を実行してみる
行末に^MがついているとCR+LF改行のままです

ちなみに、htmlファイルは改行を無視します

Re: CGIを表示するとソースがそのまま表示される(5)
日時: 2012/11/27(Tue) 17:49
名前: さかな
ありがとうございました、非常に勉強になりました
自分の中では上の方法になってたつもりだったのですが、なにかミスってたのでしょうね、、、

改行の方も勉強になりました
もう少しいろんな事をやってみたいと思います

※古いスレッドには返信できない場合があります


■関連コンテンツ




▲このページのトップへ戻る

ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします