CGI にすると require できない?(コマンドだとできる)
[上に]
[前に]
[次に]
SRI
2000/06/04(日) 00:21:48
gifcat.pl を使おうと思い、コマンドラインで実行するとうまくいくのですが、
CGI に組み込むとうまくいきません。
gifcat.pl を gifcat.cgi という名前でスクリプトと同じ場所に入れ、
chmod 711 し、
require '絶対パス/gifcat.cgi';
にして実行します。
ブラウザーから見ると Internal Server Error になり、
エラーログをみると
Can't locate プログラムの絶対パス/gifcat.cgi in @INC (@INC contains: /usr/local/
lib/perl5/i386-freebsd/5.00404 /usr/local/lib/perl5 /usr/local/lib/perl5/site_pe
rl/i386-freebsd /usr/local/lib/perl5/site_perl .) at プログラム名 line 9.
と怒られていますが、コマンドラインから実行するとうまくいきます。
スクリプトの最後に gifcat.pl をいれ込むとうまく動きます。
@INC に入っているパスに入れないといけないんでしょうか?
でもエラーログのメッセージの最後に「.」と書いてあるので、
スクリプトと同じパスであればいいのかと思い、
requre 'gifcat.cgi';
と相対パスで書いてもダメです。
しつこいようですが、この場合もコマンドラインで実行すると
うまくいきます。
なぜコマンドラインと CGI で require の挙動が違うんでしょう?
apache の設定でしょうか?
ぼくは管理者ではありませんので、
好きなモジュールを require できる方法をどなたか教えてくださいー。
PTAN
[E-Mail]
2000/06/04(日) 01:46:05
CGIの実行ユーザが別のユーザになっているのでは?
別のユーザだと、chmod 711ではread権が無いので、上記のような
エラー出ることになります。
という訳で、chmod 744にしてみて下さい。
dindi
2000/06/04(日) 02:12:26
[[解決]]
できましたー。
そっかー、require は読み込むので read 権がいるんですね。
どうもありがとうございます!!!
CGI の実行ユーザーは nobody のようです。だれだそいつ。
偽
2000/06/04(日) 02:26:25
dindiさんって誰ですか?(ピュア)
2000/06/04(日) 02:46:09
> CGI の実行ユーザーは nobody のようです。だれだそいつ。
OSがfreeBSDのようなので、たぶん AH-64 戦闘ヘリでしょう。
http://www.apache.org/
if (dindi == SRI改) {
print "まずいんでねーの?\n";
} else {
print "なんだこりゃ?\n";
}
SRI/dindi
2000/06/04(日) 04:44:24
しつれー
気分でハンドルを変えていることがバレてしまいました。(^^;
今後ともよろしく。
SRI
2000/06/04(日) 04:45:19
そうそう、httpd は apache です。
[上に]
[前に]
[次に]