はじめまして、
OSはFedora7を使用しています。
Sn Uploaderと言う所から落として来た
upload.cgiを使用しています。
それを、設置してパーミッションをcgiと置いて有るフォルダ
共に755にしてブラウザでアクセスしたら、
500 Internal Server Errorと表示されます。
Apacheのエラーログを見ると、
Premature end of script headers: upload.cgiと記載されてます。
Perlのパスは問題無かったです。
改行コードとファイル転送モードは良く
分からないので何もしてません。
Suexecはhttpd -lで調べた結果、入って無い様です。
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
他のCGIは動いてるのですが、
Sn Uploaderのupload.cgiだけ動きません。
パーミッションはこの様に表示されてます。
-rwxr-xr-x 1 apache apache 50098 2008-11-02 14:37 upload.cgi
-rw-r--r-- 1 apache apache 50100 2007-12-19 05:21 upload.cgi~
この様な状態でupload.cgiを動かすには如何すれば良いでしょうか?
よろしくお願いします。
はじめに、この手の問題を自分で解決できない状況でuploaderに手を出すのは危険ではないかと思いますが・・・。
uploaderの怖さは、作者のサイトからもリンクされていますが承知していますよね。
大前提としてNoCGI.pm版を使用しているものとします。
> それを、設置してパーミッションをcgiと置いて有るフォルダ
> 共に755にしてブラウザでアクセスしたら、
> 500 Internal Server Errorと表示されます。
> Apacheのエラーログを見ると、
> Premature end of script headers: upload.cgiと記載されてます。
>
> Perlのパスは問題無かったです。
もともとが/usr/bin/perl なので、FedoraならデフォルトでOKのはず。
> 改行コードとファイル転送モードは良く
> 分からないので何もしてません。
FTPでASCIIモードで転送していれば問題ないですが、サーバでじかにダウンロードすると駄目です。
> Suexecはhttpd -lで調べた結果、入って無い様です。
> Compiled in modules:
> core.c
> prefork.c
> http_core.c
> mod_so.c
「mod_so.c」なのでSuEXECはDSOモジュールで組み込まれているため、これでは確認できません。
意識していなければ、デフォルトでSuEXECはロードされています。止めるなら、/etc/httpd/conf/httpd.confの「LoadModule suexec_module modules/mod_suexec.so」行をコメントアウトして再起動。
> 他のCGIは動いてるのですが、
但し、同じユーザや場所(階層)で他のCGIが動いているなら止める必要は全くありません。実は、ここでいう他のCGIというのが、uploaderとは違う場所というのがオチでは?
もし他のCGIは動いているなら、それと同じ設定で動かない理由はありません。というより、おやじのバックアップ機では、FTPで転送しただけで動きました。
> Sn Uploaderのupload.cgiだけ動きません。
> パーミッションはこの様に表示されてます。
> -rwxr-xr-x 1 apache apache 50098 2008-11-02 14:37 upload.cgi
> -rw-r--r-- 1 apache apache 50100 2007-12-19 05:21 upload.cgi~
uploaderは、どこに設置しているのですか? オーナがapache:apacheということは、/var/www/html配下ですか?
suEXECならパーミッション701にすべきでしょう。
> はじめに、この手の問題を自分で解決できない状況でuploaderに手を出すのは危険ではないかと思いますが・・・。
> uploaderの怖さは、作者のサイトからもリンクされていますが承知していますよね。
> 大前提としてNoCGI.pm版を使用しているものとします。
>
> > それを、設置してパーミッションをcgiと置いて有るフォルダ
> > 共に755にしてブラウザでアクセスしたら、
> > 500 Internal Server Errorと表示されます。
> > Apacheのエラーログを見ると、
> > Premature end of script headers: upload.cgiと記載されてます。
> >
> > Perlのパスは問題無かったです。
>
> もともとが/usr/bin/perl なので、FedoraならデフォルトでOKのはず。
>
> > 改行コードとファイル転送モードは良く
> > 分からないので何もしてません。
>
> FTPでASCIIモードで転送していれば問題ないですが、サーバでじかにダウンロードすると駄目です。
>
> > Suexecはhttpd -lで調べた結果、入って無い様です。
> > Compiled in modules:
> > core.c
> > prefork.c
> > http_core.c
> > mod_so.c
>
> 「mod_so.c」なのでSuEXECはDSOモジュールで組み込まれているため、これでは確認できません。
> 意識していなければ、デフォルトでSuEXECはロードされています。止めるなら、/etc/httpd/conf/httpd.confの「LoadModule suexec_module modules/mod_suexec.so」行をコメントアウトして再起動。
>
> > 他のCGIは動いてるのですが、
>
> 但し、同じユーザや場所(階層)で他のCGIが動いているなら止める必要は全くありません。実は、ここでいう他のCGIというのが、uploaderとは違う場所というのがオチでは?
> もし他のCGIは動いているなら、それと同じ設定で動かない理由はありません。というより、おやじのバックアップ機では、FTPで転送しただけで動きました。
>
> > Sn Uploaderのupload.cgiだけ動きません。
> > パーミッションはこの様に表示されてます。
> > -rwxr-xr-x 1 apache apache 50098 2008-11-02 14:37 upload.cgi
> > -rw-r--r-- 1 apache apache 50100 2007-12-19 05:21 upload.cgi~
>
> uploaderは、どこに設置しているのですか? オーナがapache:apacheということは、/var/www/html配下ですか?
> suEXECならパーミッション701にすべきでしょう。
おやじ様
早速のご回答有り難うございます。
uploadの設置は勉強の為とLAN内で使いたいと思い設置しようとしてました。
私程の人間じゃマダマダwebに公開出来ません…(汗
upload.cgiはサーバーでじかにダウンロードした物です。
この時点でFTP等じゃないと設置は無理ですか?
それと、SuEXECはいちおapacheのhttpd.confの奴に
#を付けて再起動しましたがダメでした。
はい、おやじ様が仰ってるように他のcgiとは違う場所に
upload.cgiを設置しております。
設置場所は/var/www/html/up2です。
他のCGIが動いてる場所は/var/www/htmlです。
/var/www/htmlにupload.cgiを置いてみましたが動きませんでした。
今回はup2と言うディレクトリに置きたい為、htmlでは無くup2に置いてます。
オーナーは元々rootでしたが、色々試しててオーナーを
apacheにしてる方が居たので自分も試しにしてみただけです。
この場合、どうすれば良いでしょうか?
> upload.cgiはサーバーでじかにダウンロードした物です。
> この時点でFTP等じゃないと設置は無理ですか?
おやじは、
> > > 改行コードとファイル転送モードは良く
> > > 分からないので何もしてません。
> >
> > FTPでASCIIモードで転送していれば問題ないですが、サーバでじかにダウンロードすると駄目です。
といっているのに、再度無理ですか? と聞かれると回答する意味がないですよね。
ご自分で「改行コードとファイル転送モードは良く分からない」といっていることを放置していることが一番の問題。つまり、本質論が理解できていないので、おやじの答えだけでは先に進めなかったということだと思います。
その背景には、/var/www/html配下にFTPで転送するすべがないからだと思いますが、応用を利かせばいくらでも手はあります。
一旦、FTPで送れるユーザに送って(この時点で改行コードは変換される)から、サーバ上で移動する、という手は思いつきませんか? (オーナは変更要)
結論は改行コードの問題です。この問題ならsuEXECは関係ないです。
http://www.aconus.com/~oyaji/faq/apache_cgi3.htm
> はい、おやじ様が仰ってるように他のcgiとは違う場所に
> upload.cgiを設置しております。
> 設置場所は/var/www/html/up2です。
> 他のCGIが動いてる場所は/var/www/htmlです。
> /var/www/htmlにupload.cgiを置いてみましたが動きませんでした。
> 今回はup2と言うディレクトリに置きたい為、htmlでは無くup2に置いてます。
>
> オーナーは元々rootでしたが、色々試しててオーナーを
> apacheにしてる方が居たので自分も試しにしてみただけです。
> この場合、どうすれば良いでしょうか?
upload.cgiが設置してあるディレクトリで、以下のとおりやれば動くはずです。
下記が何をしているかは、調べて考えてください。
#cmod 755 /var/www/html/up2
#cd /var/www/html/up2
#tr -d '\r' < upload.cgi > upload2.cgi
#mv upload2.cgi upload.cgi
#chmod 755 upload.cgi
> > upload.cgiはサーバーでじかにダウンロードした物です。
> > この時点でFTP等じゃないと設置は無理ですか?
>
> おやじは、
>
> > > > 改行コードとファイル転送モードは良く
> > > > 分からないので何もしてません。
> > >
> > > FTPでASCIIモードで転送していれば問題ないですが、サーバでじかにダウンロードすると駄目です。
>
> といっているのに、再度無理ですか? と聞かれると回答する意味がないですよね。
> ご自分で「改行コードとファイル転送モードは良く分からない」といっていることを放置していることが一番の問題。つまり、本質論が理解できていないので、おやじの答えだけでは先に進めなかったということだと思います。
> その背景には、/var/www/html配下にFTPで転送するすべがないからだと思いますが、応用を利かせばいくらでも手はあります。
> 一旦、FTPで送れるユーザに送って(この時点で改行コードは変換される)から、サーバ上で移動する、という手は思いつきませんか? (オーナは変更要)
>
> 結論は改行コードの問題です。この問題ならsuEXECは関係ないです。
>
> http://www.aconus.com/~oyaji/faq/apache_cgi3.htm
>
> > はい、おやじ様が仰ってるように他のcgiとは違う場所に
> > upload.cgiを設置しております。
> > 設置場所は/var/www/html/up2です。
> > 他のCGIが動いてる場所は/var/www/htmlです。
> > /var/www/htmlにupload.cgiを置いてみましたが動きませんでした。
> > 今回はup2と言うディレクトリに置きたい為、htmlでは無くup2に置いてます。
> >
> > オーナーは元々rootでしたが、色々試しててオーナーを
> > apacheにしてる方が居たので自分も試しにしてみただけです。
> > この場合、どうすれば良いでしょうか?
>
> upload.cgiが設置してあるディレクトリで、以下のとおりやれば動くはずです。
> 下記が何をしているかは、調べて考えてください。
>
> #cmod 755 /var/www/html/up2
> #cd /var/www/html/up2
> #tr -d '\r' < upload.cgi > upload2.cgi
> #mv upload2.cgi upload.cgi
> #chmod 755 upload.cgi
おやじ様
ご回答有難う御座います。
#cmod 755 /var/www/html/up2(up2のパーミッション変更)
#cd /var/www/html/up2(up2に移動)
#tr -d '\r' < upload.cgi > upload2.cgi(LFに改行)
#mv upload2.cgi upload.cgi(ファイル名変更)
#chmod 755 upload.cgi(upload.cgiのパーミッション変更)
この様に何とかおやじ様のお陰で理解出来ました。
お忙しい中回答して頂き有難う御座います。