- - PR -
プログラムファイルをブラウザーからFTPした場合の動作確認
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-17 21:31
お世話になります。
サーバOSはRHL9.0です。 apache1.3.31 Win2000の環境でIE6.0です。 ブラウザーのURL部分を ftp://www.目的のドメイン.com/ してアクセスし、UserIDとPASSを入力後public_htmlに移動 そこでCGIファイルをブラウザー上からUPし、そのCGIファイルに対する パーミッションの設定をブラウザー行いました。(右クリック→プロパティで設定) http://www.目的のドメイン.com/目的のCGIファイル.cgi としてアクセスしても、エラーになってしまします。 ■エラー内容 -------------------------------------------------------------------------- Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, UserID@ドメイン.com and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. -------------------------------------------------------- ■エラーログでは・・・ ------------------------------------------- [Fri Dec 17 21:37:40 2004] [error] [client 192.168.1.1] Premature end of script headers: /home/UserID/public_html/test-HelloWorld.cgi ------------------------------------------- とありました。 試しにFTPソフトのFFFTPでファイルをUPし、パーミッションをセットアップ すると正常に動作する事を確認できています。 IEのブラウザー上からプログラムファイルをUPした場合でIEのブラウザー上から 右クリック後にファイルのパーミッションの設定を行った場合、エラーになるのは どうしてなのでしょうか。 この問題はFTPソフトが利用できない環境の人を想定していますので、 FTPソフトからファイル一式をUPし動作確認できれば問題解決とはしていません。 この問題について、現在「Premature end of script headers」で ぐぐって調べてみていますが、どなたかご存知の方いらっしゃいませんでしょうか。 宜しくお願い致します。 [ メッセージ編集済み 編集者: taku 編集日時 2004-12-17 21:39 ] |
|
投稿日時: 2004-12-17 22:02
自己解決しました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16253&forum=10&2 にその原因らしき情報が載っているのを発見しました。 またブラウザーからのUPに関しましては #!/usr/bin/perl -- とする事で、ブラウザーからプログラムファイルのUP→パーミッション設定によっても 動作確認する事ができました。 しかし、なぜこの問題が起きるのかは疑問ですので、それに関して何か情報をお知りの 方がいらっしゃいましたらご掲示頂けませんでしょうか。 |
|
投稿日時: 2004-12-18 10:37
まず Premature end of script headers のエラーは Webサーバ(apache?)が、
Content-type:〜 の出力がないCGIプログラム(contet-type よりも先に何かしらの標準出力がある)を実行されたときに出ます。 おそらく、WebからFTPされたときに、改行コードなどの問題で、1行目の#/bin/perl文が、次の行などとくっついてしまい、perlが別のコマンドとして実行され(perl2行目の文字 のコマンドを実行)、command not found かなにかのエラーが出て、Premature〜となっていると思います。 FTPソフトで上げた時は改行コードが、きちんと変換されているとか、1行目に perl -- と空白をはさんだときは、空白があるおかげで、perlが単体のコマンドとして実行されたと思います。 |
|
投稿日時: 2004-12-19 17:47
おさるわん様、丁寧なご説明有難う御座います。
>おそらく、WebからFTPされたときに、改行コードなどの問題で、1行目の#/bin/perl文が、 >次の行などとくっついてしまい、perlが別のコマンドとして実行され(perl2行目の文字 >のコマンドを実行)、command not found かなにかのエラーが出て、Premature〜となってい >ると思います。 >FTPソフトで上げた時は改行コードが、きちんと変換されているとか、1行目に perl -- と >空白をはさんだときは、空白があるおかげで、perlが単体のコマンドとして実行されたと思い >ます。 なるほどですねー。そのような背景(ブラウザーからUP時は改行コードが変換されず、 1行目の#/usr/bin/perlが2行目とくっつき別のコマンドとして実行されるらしい・・)から・・という事でしたか。 そこで、test.cgiの文字/改行コードを EUC/LFに変換し、再度ブラウザーからアップ後、確認しました所、エラーも出ず 正常に起動する事を確認できました。 文字コードはSJISでもEUCでもOKでしたので、やはり改行コードが関係しているみたいですね。 改行コードCRでもエラーになりました。 ご掲示、有難う御座いました。 |
1