▼スレッド
│
└◇150:Re:#!に関して [川] 02/09 01:13
└◇151:Re:#!に関して [水口] 02/09
└◇152:Re:#!に関して [川] 02/09
└◇154:Re:#!に関して [水口] 02/09 <
> つまり、bash等で「ls /usr/local/bin」とやれば d:/cygwin/usr/local/binスレッド一覧
> の内容が見えるはずなんですが。それはできて「#!/usr/local/bin/perl 」が通らない
> とすると......
> 1 cygwinアプリでないshellを使用してる?
> 2 ......
> 最近まさかと思う質問が多いようですが、なにか事態が変わってるんでしょうか?
1) cygwinの窓で ls /usr/local/binとすれば、ファイルが見れます。
2 ) しかし、http://localhost/でアクセスすると、サーバーの内部エラーが発生し、Apacheのログを見ると以下のようになっています。
(2)No such file or directory: couldn't spawn child process: d:/program files/apache group/apache/htdocs/index.cgi
3) #!d:/cygwin/usr/local/bin/perl と書き直すと、正しくブラウザで表示されます。
cygwinは以下のとおりです。
CYGWIN_NT-4.0 PAPA 1.3.6(0.47/3/2) 2001-12-08 17:02 i686 unknown
Apacheは1.3.22
環境変数を設定したり、何かCygwinの設定で、ルートの基点が変更できたら良いなと思います。
しかし、普通に考えると、インストールされるとそれを基点にアクセスできるのが当たり前と考えますが
私の環境が異常なのでしょうか。
Apacheのログを見ると以下のようになっています。スレッド一覧
> (2)No such file or directory: couldn't spawn child process: d:/program files/apache group/apache/htdocs/index.cgi
> 3) #!d:/cygwin/usr/local/bin/perl と書き直すと、正しくブラウザで表示されます。
なるほど、Apache がらみでしたか。
d:/cygwin/ と / を等価だと認識できるのは Cygwinアプリだけなので、非Cygwinアプリ
の Apache が「#! /usr/local/bin/perl」を正しく処理できないのは理解できます。
1 Apache の設定で、「外部コマンドは d:/cygwin/bin/sh 経由で起動する」様にする。
2 Cygwinでコンパイルした Apache を使用する。
3 CYGROOT を c:/ にした上で、c: 以外のドライブレターを使用しない。
のうちいずれかひとつで解決しそうな気がしますね。
> 私の環境が異常なのでしょうか。
各ソフトが仕様どおりの動作をした結果だと思います。
>各ソフトが仕様どおりの動作をした結果だと思います。スレッド一覧
そのとおりですね。 私の少ない知識の範囲で考えておりました。
>なるほど、Apache がらみでしたか。
>d:/cygwin/ と / を等価だと認識できるのは Cygwinアプリだけなので、非Cygwinアプリ
>の Apache が「#! /usr/local/bin/perl」を正しく処理できないのは理解できます。
>1 Apache の設定で、「外部コマンドは d:/cygwin/bin/sh 経由で起動する」様にする。
>2 Cygwinでコンパイルした Apache を使用する。
>3 CYGROOT を c:/ にした上で、c: 以外のドライブレターを使用しない。
>のうちいずれかひとつで解決しそうな気がしますね。
1が一番スマートなような気がします。(大きな修正なく目的が達成できそうな点で)
しかし、1−3すべてわからず、手をこまねいております。
1でWin版のApacheを用いていますが、httpd.confにそれらしき記述を見つけることができませんでした。
なぜ、Win版Aapcheを使うのかという理由は、Win版のインストール・設定は非常に簡単にでき、バージョンアップも頻繁に行われている点です。
2は、Cygwin版Apacheにすれば、話は早いのですが、実は Perlも cygwin版を使っていなく、Win版Perlを利用しています。
理由は1と同様に、インストール・セットアップ・バージョンアップなど総合的に見てソフト自体の出来が良いと感じているからです。
3は、Cygwinのど素人で設定ファイルをいじくるのでが恐いからです。(^^;
自分では最善のつもり・上級者が見れば情けない理由ですがよろしくお願いいたします。
> 1でWin版のApacheを用いていますが、httpd.confにそれらしき記述を見つけることができませんでした。スレッド一覧
申し訳無い。できませんでしたか。 Apache を使ったことがないくせに、調べずに書いてしまいました。
> 2は、Cygwin版Apacheにすれば、話は早いのですが、実は Perlも cygwin版を使っていなく、Win版Perlを利用しています。
Cygwin の Shell に #!/.../perl を処理させると、
非Cygwin の Perl が script file を読めないというケースに昔遭遇しました。
これは、Cygwin の Shell は例えば d:/prog/foo/bar.cgi を
/cygdrive/d/prog/foo/bar.cgi の様な 非Cygwinアプリには理解できない Path に変換して Perl に渡す(ことがある)為です。
今は CygwinPerl を使用しているので最新の事情は違うかもしれませんが。
いっそ、Cygwin に頼らないアプローチもアリでしょうか?
# 掲示板の趣旨に反してすみません。m(_r_)m
Apache process の current drive を d: に固定することができたなら、
後は d:\cygwin\usr\local を d:\usr\local に移動すれば OK かも知れませんね。