すみません、以前も質問したのですが、残念ながら解決に至らなかったので
ここでまた質問させていただきました。お詳しい方のアドバイスをよろしくお願い致します。
cgi-binの中にauctというディレクトリを入れその中にあるindex.cgiにアクセスしたいのですが
http://localhost/cgi-bin/auct/index.cgi
とアクセスすると、500 internal server error となってしまいます。
httpd.confの設定は
scriptalias /cgi-bin/ "/var/www/cgi-bin/"を
↓
alias /cgi-bin/ "/var/www/cgi-bin/"と変え(#は外しています)、
<Directory "/var/www/cgi-bin">
のoptionsをnoneからExecCGIにしました。
あと #AddHandler cgi-script .cgi の#は外しました。
scriptaliasをaliasに変えたのはindex.cgiにアクセスすると、同ディレクトリ内にある、start.shtmlというファイルを開くという設定になっているので、それをCGIと認識されないようにするためにしました。
そのほかはデフォルトの状態ですので、documentrootはvar/www/htmlです。
各CGIのperlのパスは#!/usr/bin/perlとしていて
実際そこにperlがあるか確認もしました。
設定した後httpdの再起動もしました。
error log は
premature end of script headers: index.cgiと
File does not exist: /var/www/html/favicon.ico
となっています。
この設定でWindowsのapacheはCGIが動作したのですが、fedora core3ではうまくいかないのは
どうしてでしょうか?アドバイスお願いいたします。
No.1
- 回答日時:
こんにちは。
> File does not exist: /var/www/html/favicon.ico
こっちは動作しない事とは関係ないですね。
> premature end of script headers: index.cgi
これはいくつか理由が考えられますね。
CGIをFedoraサーバにFTPするときの転送モードはasciiになっているでしょうか。
ascii転送されているのでしたら、CGIの最初のprint文がこれになっていないとか。
print "Content-type: text/html\n\n" ;
回答ありがとうございます!
説明不足ですみませんでした。
転送モードはasciiでいたしました。
あと確認しましたところ、最初のprint文は
print "Content-type: text/html\n\n" ;
となっていました。
あと補足をさせていただくと、動作に
関係があると思われるcgi-binのファイルとディレクトリの構成は.
[cgi-bin]
....├ [auct]
...........├ [ pl ] --- 705,755
...................├ [ lib ] --- 755
...................├ ap.cgi --- 644
...................├ category.cgi --- 644
...................├ cgi-lib.pl --- 644
...................├ comu.cgi --- 644
...................├ config.cgi --- 644
...................├ image.pl --- 644
...................├ index.html --- 644
...................├ jcode.pl --- 644
...................├ mail.cgi --- 644
...................├ mng.cgi --- 644
...................├ show.cgi --- 644
...................├ usr.cgi --- 644
...................└ wwwis.pl --- 644
...........├ auction.cgi --- 705,755
...........├ count_down.cgi --- 705,755
...........├ cron.cgi --- 705,755
...........├ index.cgi --- 705.755
...........├ master.cgi --- 705,755
...........├ search.cgi --- 705,755
...........├ start.shtml --- 644
...........└ temp.cgi --- 705,755
となっています([ ]はディレクトリです。横にある数字はプログラムした方推奨のパーミッションです。ちなみにわたしはとりあえず、すべて755にしています。)
このauctディレクトリにあるindex.cgiにアクセスしたらstart.shtmlが開くという設定なのですが、なにか問題があるでしょうか。よろしくお願いいたします。
No.2
- 回答日時:
#1です。
くどくてすみません、他のplファイルとかもasciiモードで転送されているか、ご確認下さい。
次に、切り分けのために、index.cgiとは別にtest.cgiとかをアップして、print "hello,world\n"とかを表示させて見てはいかがでしょう。
これが表示できれば、apacheのExecCGIは問題ない事がわかりますよね。
それが問題ないとして、index.cgiから呼ばれるstart.shtmlのかわりに、test.htmlとかにして、呼び出しのところが問題ないか、確認。
それがOKだとすると、index.cgiまではOKだという事がわかると思います。
となるとstart.shtmlが怪しくて、もしそれがSSIでしたら、エラーはそこで出ている可能性が高くなります。
ディレクトリのOptionsにIncludesがないとか、apacheの以下のパースがコメントアウトされたままとか・・。
AddType text/html .shtml
AddHandler server-parsed .shtml
ご回答ありがとうございます。
転送方法ですが、plファイルなどに限らずバイナリもasciiで転送してみたりしたのですがだめでした。
あと、ご指示いただいた通りtest.cgiの動作テストしたところ、動作いたしませんでした。
詳細はまずデフォルトの状態でtest.cgiをcgi-binにおいてアクセスした結果
500internal server error
となりエラーログは
premature end of script headers: test.cgi
となりました。
次に #addhandler cgi-script .cgi をコメントにして
<directory "var/www/html">のoptinsにExecCGIを追加してlocalhost/test.cgiとアクセスしますと、こちらも500internal server errorとなり、
エラーログは no such file or directory :execof 'var/www/html/test.cgi' failed
と premature end of script headers: test.cgi
となりました。
最後に最初の質問でしました、scriptaliasをaliasに変えるのをtest.cgiでやってみましたところ、500internal server errorとなり、エラーログは
no such file or directory :execof 'var/www/html/test.cgi' failed
と premature end of script headers: test.cgi
でした。
これはExecCGIが問題あるということなのでしょうか。
正直かなり調べたのですが、まったく事態が好転いたしません。いったい何が問題なのでしょうか?サーバー機に問題がある場合なども考えられるのでしょうか?どうかご助力お願いいたします。
No.3
- 回答日時:
>scriptalias /cgi-bin/ "/var/www/cgi-bin/"を
> ↓
>alias /cgi-bin/ "/var/www/cgi-bin/"と変え(#は外しています)、
ここは変更しなくともいいのでは?
それに、「scriptalias /cgi-bin/ "/var/www/cgi-bin/"」という設定をしてあるのなら、
><Directory "/var/www/cgi-bin">
>のoptionsをnoneからExecCGIにしました。
という事をする必要はありません。
>premature end of script headers: index.cgi
スクリプト側の問題ですね。
ところで、その転送したファイルの改行はCR(\r)+LF(\n)ですか?それともLF(\n)ですか?
もし、改行がCR(\r)+LF(\n)なら、LF(\n)に変えてから実行してみたらどうなりますか?
viでスクリプトファイルを開いた場合、以下のような場合、改行はCR+LFです。
-------8<-------8<-------8<-------
#!/usr/bin/perl^M ←この「^M(CR)」
-------8<-------8<-------8<-------
もしくは、以下の様なコマンドイメージを実行して「\r\n」があるなら改行がCR+LFになってます。
-------8<-------8<-------8<-------
# head -1 index.cgi | od -cx
0000000 # ! / u s r / b i n / p e r l \r ←この「\r(CR)」
2123 752f 7273 622f 6e69 702f 7265 0d6c
0000020 \n \0
000a
0000021
-------8<-------8<-------8<-------
もしそうならば、nkfコマンドがおそらくインストールされているはずなので、それで改行をCR+LFからLFに変更してください。
ご回答ありがとうございます!
ご指示いただいたとおり改行コードをcgiのソースを開いて確認してみましたが、\nというものだけで、\rというものは見当たりませんでした。
また、付け加えさせていただきますが、httpd.confの設定が <directory "/var/www/html">のoptionsにExecCGIを追加。#addhandler cgi-script .cgi のコメント化。そのほかはデフォルトという状態で、簡単なCGIファイルを作りvar/www/htmlで動作させたところ正常に動作いたしました。
同じ環境でindex.cgiのほうはエラーが出るということはご指摘の通りスクリプト側の問題と見てよろしいのでしょうか?ご指導お願いいたします。
No.4
- 回答日時:
#1,2です。
2つ確認なのですが、test.cgiは
-----------------------
#!/usr/bin/perl
print "Content-type: text/html\n\n" ;
print "hello\n<br>" ;
-----------------------
みたいな感じでしょうか。
あとvar/www/htmlですが、
/var/www/html
の事ですよね?
-----------------------
次に #addhandler cgi-script .cgi をコメントにして
<directory "var/www/html">のoptinsにExecCGIを追加してlocalhost/test.cgiとアクセスしますと、こちらも500internal server errorとなり、
エラーログは no such file or directory :execof 'var/www/html/test.cgi' failed
と premature end of script headers: test.cgi
となりました。
-----------------------
これについては、
#addhandler cgi-script .cgi
の#があるとダメだと思います。コメントを外して再度試して下さい。
私もFC1で似たような環境を作成して試しまたが、test.cgiまでは問題なく稼働します。
お忙しい中たびたびのご回答感謝いたします!
作成しました.cgiは
#!/usr/bin/perl
print "content-type: text/html\n\n";
print "<html>\n";
print "<body>\n";
print "これが見えたら大丈夫\n";
print "</body>\n";
print "</html>\n";
というものです。
あと、すみません仰るとおりです、var/www/html/ではなく, /var/www/html/でした。
加えてこちらも私の書き間違いなのですが、#addhandler cgi-script .cgi をコメントにしたではなく、コメントをはずしたの間違いでした。
こちらのミスで無駄な手間をおかけしてしまいましてすみませんでした。
現在とりあえずtest.cgiが動いたということでどうも私が動かそうとしているscriptがあやしいというアドバイスをいただいたので、そちらのほうからpremature end of script headersについての解決法をgoogleで調べているのですが、なかなかうまくいきません。
また何かご指示いただけることがございましたらよろしくお願いします。
No.5
- 回答日時:
動作させようとしているCGIはどこかで公開されているものなのでしょうか?
もし、そうならば、ちょっとこちらの環境で試してみたいので出来ればURLを、URLの提示が不可能ならその場所が特定出来そうな情報を頂けませんでしょうか?
是非お願いいたします!!
フリーのCGIではないので私の持っている正式版ではなく体験版の方になりますが、よろしいでしょうか?私は自宅サーバーでやっているのですが体験版の方も同じエラーが出ます。よろしくお願いいたします。
http://www.perldeco.net/trial/auction_pro.shtml
No.6
- 回答日時:
#1,2,4です。
-----------------
また、付け加えさせていただきますが、httpd.confの設定が <directory "/var/www/html">のoptionsにExecCGIを追加。#addhandler cgi-script .cgi のコメント化。そのほかはデフォルトという状態で、簡単なCGIファイルを作りvar/www/htmlで動作させたところ正常に動作いたしました。
-----------------
> #addhandler cgi-script .cgi のコメント化
はコメント外しですよね?
それで、この状態で次のステップに進んではいかがでしょう。
/home/www/cgi-bin
を/cgi-bin/にaliasしますよね。
この際に、ScriptAliasのところを修正するのではなく、Alias文を新規につくりましょう。
場所は
Alias /icons/ "/opt/apache/icons/"
があるあたりでいいと思います。
<IfModule mod_alias.c>の後ですね。
さらに
<Directory "/home/www/cgi-bin">
にExecCGIを追加。
これでapacheをリスタート、test.cgiを/home/www/cgi-binにおいて、稼働確認。
うまく行くはずですから、今度はindex.cgiを試してはいかがでしょうか。
ご回答ありがとうございます。
ご指示いただいた設定をしてみました、が、index.cgiの方は動きません・・・。test.cgiは動きますので、やはりscriptの問題なんでしょうか?
よろしくお願いいたします。
No.7
- 回答日時:
体験版(auction_pro_try.zip)のほうで確認してみました。
環境
Fedora Core 3(VMware上に新規インストール)
httpd(Apache) httpd.confはデフォルトから「AddHandler cgi-script .cgi」を有効にしただけ。
-------8<-------8<-------8<------8<------
※auction_pro_try.zipをFC3上に転送
# unzip auction_pro_try.zip
# cd auction_pro_try
# mv auction_pro /var/www/cgi-bin
# cd /var/www/cgi-bin/auction_pro
# chmod +x *.cgi
この状態で
http://localhost/cgi-bin/auction_pro/search.cgi
にアクセスすると「premature end of script headers」。
元々のファイルは漢字コード S-JIS、改行コード CR+LFのようなので以下のシェルを作成し改行コードを CR+LF から LF に変換。
# cat NKF.sh
TMPFILE=/tmp/NKF.$$
for FILE in `find . -name "*.cgi" -o -name "*.pl"`
do
echo ${FILE}
nkf -S -s -Lu ${FILE} > ${TMPFILE}
cp ${TMPFILE} ${FILE}
done
rm -f ${TMPFILE}
# bash ./NKF.sh
この状態で
http://localhost/cgi-bin/auction_pro/search.cgi
にアクセスすると「premature end of script headers」にならず正常に表示されます。
-------8<-------8<-------8<------8<------
No.3で書いたようどこかで改行コードを変換していないなら、改行コードがCR+LFのままになっていてそのせいで「premature end of script headers」になっているような気がするんですが。
ご回答ありがとうございます!
仰るとおりでした!EUCとLFに変換したところ
見事CGIが動作しました。
本当に何十時間悪戦苦闘したか分かりません。
その状況から抜け出すことができたのは、Leanさん
のおかげです。
本当になんとお礼の言葉を言っていいか分かりません。
まだ、文字化けしてたり、グローバルからアクセスしたら、真っ白な画面が表示されてしまってたりと、
多々問題はありますが、とにかく今は感謝の気持ちで一杯です!
残念ながら私には20ポイントしか、お渡しする権利はありませんが、本当にそんなものとは比較にならないほど感謝の気持ちです。本当にありがとうございました。
No.8
- 回答日時:
#1,2,4,6です。
#7様と同じく体験版のうち、search.cgiを試してみました。
zipファイルをFedoraに持っていって、そこで解凍したものはやはり
premature end of script headers
になりますね。
WINDOWSでの+lhacaで解凍し、ffftp1.92のASCIIモードでアップしたものは稼働しました。
ご回答ありがとうございます!
改行コードの問題だったようです。
このたびはどれだけ助けていただいたか分かりません!Leanさん同様10gateさんの助けなしでは間違いなく解決には至らなかったはずです。
私の勉強不足と力不足のせいで、たくさんのお手間をかけさせてしまいましたことをお詫びするとともに、このたびは本当に本当にありがとうございました!
No.9ベストアンサー
- 回答日時:
NO.8 10gate様
>WINDOWSでの+lhacaで解凍し、ffftp1.92のASCIIモードでアップしたものは稼働しました。
FFFTPではASCIIモードで転送する際、改行コードをホスト側に合わせた改行コードに変更してくれるようですね。
そこで改行コードをCR+LF(Windows)からLF(UNIX)にしてくれるのでしょうね。
質問の方がどのFTPクライアントを使用しているのかわかりませんが、Windowsからファイル転送をしていてFFFTP以外のFTPクライアントを使用しているならFFFTPを試してみてはどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI 「CGIにより定義されていない」とは・・・ ? 3 2023/01/01 12:00
- その他(ネットショッピング・通販・ECサイト) ネットサイトの中国で洋服を購入しました。昨日の返信です 4からの追跡番号):https://toi. 1 2022/12/28 09:47
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー「cpp0: /var/tmp/cczy3N...
-
Ubuntu、ファイル移動によるエ...
-
ファイル所有者を「apache」へ...
-
Red Hat Linux 9.0 でWebを公...
-
lsでディレクトリのサイズが409...
-
FTPでファイルがダウンロードで...
-
すみません、二度目です。fedor...
-
書き込み権限がありません
-
嫌ってるのに真似してきたりマ...
-
onedriveの中身を削除したらパ...
-
Windows10 フォルダ内の自動並...
-
macのdmgファイル(動画)をMP4...
-
mrl→midファイルへ
-
Windows11 でのファイル削除
-
Truecryptの暗号化解除方法教え...
-
office365 ファイルを削除したい
-
MGRファイルは消して良いのか
-
ftpのmgetコマンドの自分の格納...
-
7zを使うとフォルダの中身がす...
-
バッチファイルで変数の中身を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPでファイルがダウンロードで...
-
ファイルが移動できません。
-
lsでディレクトリのサイズが409...
-
shellscript内のコマンドを、su...
-
Index.html表示しない!!
-
RPM のソースパッケージが展開...
-
Ubuntu、ファイル移動によるエ...
-
シンボリックリンクでパミッシ...
-
「E212:書込み用にファイルを開...
-
PHPでchmod()を使えるようにす...
-
あり得ない!アーカイブを展開...
-
winSCPでlinuxフォルダを作りたい
-
書き込み権限がありません
-
ファイル「所有者」と「所有グ...
-
apacheユーザの実行権限設定は...
-
Apacheのドキュメントルート配...
-
ダウンロードしたファイル
-
SFTPでファイルのアップロード...
-
vsftpで共有ディレクトリ
-
rootユーザのメールボックスへ...
おすすめ情報