IISで使用していたCGIをApacheに移植したところ、動きません。Windowsの改行コードをUNIXのそれに変換する必要があるらしいのですが、変換の方法が判りません。どなたかご教示をお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

参考URLからの抜粋です。


普通は、FTPでアップさせるときは、特に何もしなくても、アスキーモードで送れば、改行コードを自動的に変換してくれているのですが…

コンピュータは文字をすべて文字コードという数値で処理しますが、改行を表すのに用いられるコードが改行コードです。改行コードはOSによって次のように異なります。

OS コード表記 16進表記 10進表記
UNIX <LF> 0A 10
Windows <CR><LF> 0D 0A 13 10
Macintosh <CR> 0D 13

HTMLファイルであれば、どの改行コードであってもブラウザが適切に処理してくれるのですが、CGIスクリプトはOSに適した改行コードでないと、エラーになってしまいます。例えば、Windowsで作成したCGIスクリプトをUNIXのサーバーに転送する際は、改行コードを <CR><LF> から <LF> に変換してやらなくてはなりません。

参考URL:http://tohoho.wakusei.ne.jp/wwwcgi2.htm#CgiFtp
    • good
    • 0
この回答へのお礼

回答有難うございました。

お礼日時:2001/11/11 21:37

テキストエディタで、開いて改行コードを変換すればよいと思いますが。



参考URL:http://www.vector.co.jp/soft/win95/writing/se086 …
    • good
    • 0
この回答へのお礼

回答有難うございました。

お礼日時:2001/11/11 21:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QCGIのパス(Apache winで)

初歩的な質問ですみません。

環境
windows2000 サーバー
Apache/1.3.20
ActivePerl-5.6.1.626
をインストールが完了して、CGIを動作させようとしています。
ApacheでのHTML動作はできています。

CGIプログラムの一行目に
#!/usr/local/bin/perl
と記載されています。
その文字列を
#!c:/bin/perl.exe
に変更して現在動作させています。

しかし、ISPのHPスペースのperlへのパスは
#!/usr/local/bin/perl
なので、転送前に一行目を変更しています。

変更しなくても良いように
ApacheでのCGIのパスを
#!/usr/local/bin/perl
で動作する方法を
どなたか教えていただけないでしょうか?

ちなみに
Perlは[c:\bin]にインストールしてあります。
Apacheは[g:\apache]にインストールしてあります。

Aベストアンサー

apachaで設定しているrootから見て
[root]/usr/local/bin/の位置に
c:\binの中のファイルを 全部コピーすればいいと思います

QApache WebサーバでCGIが実行できない

Apache WebサーバでCGIを実行すると Premature end of script headers というエラーになります。原因が判りません。何方かご教示をお願いします。

Aベストアンサー

Windowsで書いたCGIをUNIXサーバにFTP転送した時、binaryモードで転送していると改行コードがCRLF(0x0D0x0A)のままになり、上記エラーが生じることがあります。

emacs等で開いたときに左下に(DOS)などと出ていたら、asciiモードで転送しなおすか、
dos2unixコマンドを使って、改行コードをLFに変更してみてください。

Qapache でバイナリのCGIを動かすには

apache でバイナリのCGIを動かすにはどうすればよいのでしょうか?
(なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します)

OS:WIN98

C++バイナリのCGIを呼び出すと下記エラーとなります。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please .... the error.
More ... log.
-
Apache/1.3.12 Server at http://127.0.0.2/ Port 80


最終アクセスログ
127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610

最終エラーログ
[Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi

apache の httpd.conf と httpd.conf.default との比較

** httpd.conf
ServerName http://127.0.0.2/

** httpd.conf.default
#ServerName new.host.name

** httpd.conf
DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81"

** httpd.conf.default
DocumentRoot "C:/Apache/htdocs"

** httpd.conf
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None

** httpd.conf.default
<Directory />
Options FollowSymLinks
AllowOverride None

** httpd.conf
<Directory "E:/WWW.HOMEPAGE/KOKUCHO81">
** httpd.conf.default
<Directory "C:/Apache/htdocs">

** httpd.conf
Options Indexes FollowSymLinks ExecCGI

** httpd.conf.default
Options Indexes FollowSymLinks MultiViews

** httpd.conf
AddHandler cgi-script .cgi

** httpd.conf.default
#AddHandler cgi-script .cgi


そもそも、設定が足りてないんでしょうか?
apacheを良く使う方、よろしくお願いします。m(_ _)m

apache でバイナリのCGIを動かすにはどうすればよいのでしょうか?
(なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します)

OS:WIN98

C++バイナリのCGIを呼び出すと下記エラーとなります。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please .... the error.
More ... log.
-
Apache/1.3.12 Server at http://127.0.0.2/ Port 80


最終アクセスログ
127.0.0.1 - - [1...続きを読む

Aベストアンサー

見たところおかしいところはなさそうなのですが。

Apache1.3.12をWin98上で使っていますが、同じようなことをしてもまるで問題なく動作しています。
試しに同じことをやってみましたが問題ありませんでした。コンパイラはVC6を使用しました。
参考にならなくてスミマセン。

QWindows版ApacheとLinux版Apacheの違い

ApacheでWebサーバを立ち上げる予定ですが、Windows版ApacheとLinux版Apacheでは機能・性能上の違いがあるのでしょうか。また、セキュリティホールが発見された場合、Windows版の場合、最新バージョンに再インストールしなければならないのでしょうか。その場合、Apacheの設定ファイルやHTMLのファイルは初期値に戻ってしまうのでしょうか。

Aベストアンサー

>Windows版ApacheとLinux版Apacheでは機能・性能上の違いがあるのでしょうか。

あります。
Apache2より、MPM(Multi Processing Module)が導入されました。
Webサイトの規模や用途、あるいは使用するOSによって、最適なエンジン(MPW)を選択
できるようになりました。

・プロセスベースモデル(Unix/Linux/Windows)
Apache1と同じで、複数のApacheプロセスを起動させて、クライアントからのリクエスト
を受け付ける。

・スレッドベースモデル(WindowsNT/2000/XP)
起動するプロセスは一つで、そのプロセス内に複数のスレッドを起動させ、そのスレッドが
クライアントからのリクエストを受け付ける。

・ハイブリッドモデル(Unix系/Windows系)
プロセスベースモデルとスレッドベースモデルを統合したもの。


>キュリティホールが発見された場合、Windows版の場合、最新バージョンに再インストール
>しなければならないのでしょうか。

再インストールするかしないかはあなたの自由です。誰も強制しません。

>Apacheの設定ファイルやHTMLのファイルは初期値に戻ってしまうのでしょうか。

設定ファイルは少々の変更があるかもしれませんが、diffコマンドで比較してみるとか
configtestで文法エラーが無いか確認すれば良いです。
HTMLファイルも普段よりバックアップしておけば良いでしょう。

>Windows版ApacheとLinux版Apacheでは機能・性能上の違いがあるのでしょうか。

あります。
Apache2より、MPM(Multi Processing Module)が導入されました。
Webサイトの規模や用途、あるいは使用するOSによって、最適なエンジン(MPW)を選択
できるようになりました。

・プロセスベースモデル(Unix/Linux/Windows)
Apache1と同じで、複数のApacheプロセスを起動させて、クライアントからのリクエスト
を受け付ける。

・スレッドベースモデル(WindowsNT/2000/XP)
起動するプロセスは一つで、そ...続きを読む

Q改行コードを自動変換してくれるFTPクライアント

テキストファイルをアップロードするときに、改行コードを自動変換してくれるFTPクライアントを探してます。
今まではFFFTPを使用していたのですが、このソフト、自動で改行コードを変換してくれないようです。
サーバーの漢字コードにEUCを選択し、転送モードをアスキーにして転送してみましたが、改行コードはCRLFのままでした。
テキストファイルのアップロードではFTPソフトが自動で改行コードを変換してくれるものだと思い込んでいたのですが。。。

やりたいことは、Windowsで作ったS-JIS/CRLFのテキストファイルを、漢字コードはS-JISのままで改行コードだけをLFのみに自動変換してLinuxサーバーにアップロードしたいのです。

質問としては、

(1),
FFFTPで、自動で改行コードのみを変換し、漢字コードはそのままでアップロードする方法がありましたら教えてください。

(2),
もし、(1)ができないようでしたら、他のソフトでお勧めがありましたら紹介してください。
できれば、FFFTPのように、ビューワにメモ帳など自分の好きなアプリケーションを指定できる機能があれば助かります。

宜しくお願いします。

テキストファイルをアップロードするときに、改行コードを自動変換してくれるFTPクライアントを探してます。
今まではFFFTPを使用していたのですが、このソフト、自動で改行コードを変換してくれないようです。
サーバーの漢字コードにEUCを選択し、転送モードをアスキーにして転送してみましたが、改行コードはCRLFのままでした。
テキストファイルのアップロードではFTPソフトが自動で改行コードを変換してくれるものだと思い込んでいたのですが。。。

やりたいことは、Windowsで作ったS-JIS/CRLFのテキス...続きを読む

Aベストアンサー

その確認方法だと、FFFTPがDLしてそれを開いているので、DL時にFFFTPがLFをCRLFに再度変換しています。

ちゃんと確認するなら、FFFTPでアップしたものを変換しない方法で落として確認しないとだめです。

当方で、FFFTPでアップしたものを、sambaで直接アクセスしてひらいたら、ちゃんとLFになっていました


人気Q&Aランキング

おすすめ情報